ExtendedKernelTraits_2 is a kernel concept providing extended geometry1. Let K be an instance of the data type ExtendedKernelTraits_2. The central notion of extended geomtry are extended points. An extended point represents either a standard affine point of the Cartesian plane or a non-standard point representing the equivalence class of rays where two rays are equivalent if one is contained in the other.
Let be an infinimaximal number2, be the square box with corners , , , and . Let be a non-standard point and let be a ray defining it. If the frame contains the source point of then let be the intersection of with the frame , if does not contain the source of then is undefined. For a standard point let be equal to if is contained in the frame and let be undefined otherwise. Clearly, for any standard or non-standard point , is defined for any sufficiently large . Let be any function on standard points, say with arguments. We call extensible if for any points , ..., the function value is constant for all sufficiently large . We define this value as . Predicates like lexicographic order of points, orientation, and incircle tests are extensible.
An extended segment is defined by two extended points such that it is either an affine segment, an affine ray, an affine line, or a segment that is part of the square box. Extended directions extend the affine notion of direction to extended objects.
This extended geometry concept serves two purposes. It offers functionality for changing between standard affine and extended geometry. At the same time it provides extensible geometric primitives on the extended geometric objects.
| |
the standard affine kernel.
| |
| |
the standard ring type.
| |
| |
standard points.
| |
| |
standard segments.
| |
| |
standard oriented lines.
| |
| |
standard directions.
| |
| |
standard rays.
| |
| |
standard affine transformations.
|
| |||
the ring type of our extended kernel.
| |||
| |||
extended points.
| |||
| |||
extended segments.
| |||
| |||
extended directions.
| |||
| |||
a type descriptor for extended points.
|
|
| |||
creates an extended point and initializes it to the standard point p. | ||||
|
| |||
creates an extended point and initializes it to the equivalence class of all the rays underlying the oriented line l. | ||||
|
| |||
creates an extended point and initializes it to the equivalence class of all the rays underlying the oriented line l(p1,p2). | ||||
|
| |||
creates an extended point and initializes it to the equivalence class of all the rays underlying the ray starting in p in direction d. | ||||
|
| |||
creates an extended point and initializes it to the equivalence class of all the rays underlying the oriented line opposite to l. | ||||
|
| |||
determines the type of p and returns it. | ||||
|
| |||
returns true iff p is a standard point. | ||||
|
| |||
returns
the standard point represented by p. Precondition: K.is_standard(p). | ||||
|
| |||
returns
the oriented line representing the bundle of rays defining p. Precondition: !K.is_standard(p). | ||||
|
| |||
a ray
defining p. Precondition: !K.is_standard(p). | ||||
|
| returns the point on the northeast frame corner. | ||
|
| returns the point on the southeast frame corner. | ||
|
| returns the point on the northwest frame corner. | ||
|
| returns the point on the southwest frame corner. |
|
| |||
returns the source point of s. | ||||
|
| |||
returns the target point of s. | ||||
|
| |||
constructs a segment pq. | ||||
|
| |||
returns the orientation of p with respect to the line through s. | ||||
|
| |||
returns the orientation of p3 with respect to the line through p1p2. | ||||
|
| |||
return true iff the p3 is left of the line through p1p2. | ||||
|
| |||
return true iff s is degenerate. | ||||
|
| |||
returns the lexicographic order of p1 and p2. | ||||
|
| |||
returns the order on the -coordinates of p1 and p2. | ||||
|
| |||
returns the order on the -coordinates of p1 and p2. | ||||
|
| |||
returns the point of intersection of the lines supported by
s1 and s2. Precondition: the intersection point exists. | ||||
|
| |||
returns the direction of the vector p2 - p1. | ||||
|
| |||
returns true iff d2 is in the interior of the counterclockwise angular sector between d1 and d3. | ||||
|
| |||
returns true iff p2 is in the relative interior of the segment p1p3. | ||||
|
| |||
returns true iff s contains p. | ||||
|
| |||
returns true iff . | ||||
|
| |||
returns a unique identifier for kernel object Input/Output. Usually this should be the name of the model. |
CGAL::Extended_cartesian<FT>
CGAL::Extended_homogeneous<RT>
CGAL::Filtered_extended_homogeneous<RT>
1 | It is called extended geometry for simplicity, though it is not a real geometry in the classical sense. |
2 | A finite but very large number. |