Definition
An instance p of type r_circle_point is a point in the two-dimensional plane that can be obtained by intersecting a rational circle c and a rational line l (cf. Sections rat_circle and rat_line). Note that c and l may intersect in two points p1 and p2. Assume that we order these intersections along the (directed) line l. Then p is uniquely determined by a triple (c, l, which), where which is either first or second. Observe that the coordinates of p are in general non-rational numbers (because their computation involves square roots). Therefore the class r_circle_point is derived from real_point (see Section real_point), which means that all operations of real_point are available.
#include < LEDA/geo/r_circle_point.h >
Types
| r_circle_point::tag { first, second } | |
| used for selecting between the two possible intersections of a circle and a line. | |
Creation
| r_circle_point | p | creates an instance p initialized to the point (0,0). |
| r_circle_point | p(const rat_point& rat_pnt) | |
| creates an instance p initialized to the rational point rat_pnt. | ||
| r_circle_point | p(const point& pnt) | creates an instance p initialized to the point pnt. |
| r_circle_point | p(const rat_circle& c, const rat_line& l, tag which) | |
| creates an instance p initialized to the point determined by (c, l, which) (see above). | ||
| r_circle_point | p(const real_point& rp, const rat_circle& c, const rat_line& l, tag which) | |
| creates an instance p initialized to the real point
rp.
Precondition rp is the point described by (c, l, which). |
||
Operations
| void | p.normalize() | simplifies the internal representation of p. |
| rat_circle | p.supporting_circle() | returns a rational circle passing through p. |
| rat_line | p.supporting_line() | returns a rational line passing through p. |
| tag | p.which_intersection() | returns whether p is the first or the second intersection of the supporting circle and the supporting line. |
| bool | p.is_rat_point() | returns true, if p can be converted to rat_point. (The value false means ``do not know''.) |
| const rat_point& | p.to_rat_point() | converts p to a rat_point.
Precondition is_rat_point returns true. |
| rat_point | p.approximate_by_rat_point() | |
| approximates p by a rat_point. | ||
| r_circle_point | p.round(int prec = 0) | returns a rounded representation of p. (experimental) |
| r_circle_point | p.translate(rational dx, rational dy) | |
| returns p translated by vector (dx, dy). | ||
| r_circle_point | p.translate(const rat_vector& v) | |
| returns p translated by vector v. | ||
| r_circle_point | p + const rat_vector& v | returns p translated by vector v. |
| r_circle_point | p - const rat_vector& v | returns p translated by vector - v. |
| r_circle_point | p.rotate90(const rat_point& q, int i=1) | |
| returns p rotated about q by an angle of i x 90 degrees. If i > 0 the rotation is counter-clockwise otherwise it is clockwise. | ||
| r_circle_point | p.reflect(const rat_point& p, const rat_point& q) | |
| returns p reflected across the straight line passing through p and q. | ||
| r_circle_point | p.reflect(const rat_point& p) | |
| returns p reflected across point p. | ||
| bool | r_circle_point::intersection(const rat_circle& c, const rat_line& l, tag which, real_point& p) | |
| checks whether (c, l, which) is a valid triple, if so the corresponding point is assigned to the real_point p. | ||
| bool | r_circle_point::intersection(const rat_circle& c, const rat_line& l, tag which, r_circle_point& p) | |
| same as above, except for the fact that p is of type r_circle_point. | ||