Navigation: Up, Table of Contents, Bibliography, Index, Title Page

Boolean Operations Traits Class Requirements (Traits)

Types

Traits<R>::Object;
A common object type like CGAL_object. The ''real'' objects (e.g. Output_polygon, Segment, Point, ...) are mapped into Object using the member function Make_object (see below to the operations description).

Traits<R>::Point;
The point type on which the boolean operations algorithms operate. It should represent a two dimensional point with coordinates of type R::NT. The type must provide a copy constructor, an assignment, and an equality test. Furthermore a constructor for cartesian coordinates (Point(R::NT,R::NT)), a constructor for homogeneous coordinates (Point(R::NT,R::NT,R::NT)), and the operations R::NT Point::x() and R::NT Point::y() are needed, which returns the value of the x- or y -coordinate, respectively. This point type represents the vertices of segments, triangles, iso-oriented rectangles, and polygons, which occur as possible results of a boolean operation.

Traits<R>::Segment;
Line segment type. It should represent a two dimensional segment defined by the two extremal points of type Point. The type must provide a copy constructor, an assignment, and an equality test. Furthermore a constructor by two points ( Segment(Point,Point)) will be needed.

Traits<R>::Triangle;
The type of triangles on which boolean operations can be performed. It should represent a triangle in two dimensional Euclidean space with vertices of type Point. The type must provide a copy constructor, an assignment, and an equality test. Furthermore a constructor by three points (Triangle(Point,Point,Point)) will be needed.

Traits<R>::Iso_rectangle;
The type of iso-oriented rectangles on which boolean operations can be performed. It should represent an iso-oriented rectangle in two dimensional Euclidean space with vertices of type Point. The type must provide a copy constructor, an assignment, and an equality test. Furthermore a constructor by three points ( Iso_rectangle(Point,Point,Point)) will be needed.

Traits<R>::Polygon;
The type of polygons on which boolean operations will be performed (i.e. Input_polygon, there also exists an Output_polygon). This type should represent a simple polygon in two dimensional Euclidean space with vertices of type Point. Usually it is based on Container. The type must provide a copy constructor, an assignment, and an equality test.

Traits<R>::Polygon_vertex_const_iterator;
A (const) vertex forward iterator for Polygon.

typedef Polygon Input_polygon;
Traits<R>::Output_polygon;
The resulting polygon type. Usually based on Output_polygon_container. This type must represent a simple polygon in two dimensional Euclidean space with vertices of type Point.

Traits<R>::Bbox;
A bounding box type used internally in the computation of boolean operations. The type must provide an equality test.

Traits<R>::Container;
The container in which points of type Point are stored for further use in polygons on which boolean operations are to be performed (Input_polygon_container). Note: The only usage of Container is to define Polygon.

typedef Container Input_polygon_container;
Traits<R>::Output_polygon_container;
The container in which points of type Point are stored for further use in polygons (Output_polygon) which result by performing boolean operations. Note: The only usage of Output_polygon_container is to define Output_polygon.

Traits<R>::Output_object_container;
The container in which objects of type Object are stored. This container represents the result of a boolean operation, since each resulting object (e.g. Output_Polygon, Segment, ...) is mapped into a Object. and afterwards stored into a container of this type Output_object_container. It must provide a operation Output_object_container::push_back(Object).

Creation

Traits<R> bops_traits;
default constructor

Operations

bool bops_traits.do_overlap ( Bbox a, Bbox b)
returns true iff the boxes do overlap.
bool bops_traits.box_is_contained_in_box ( Bbox a, Bbox b)
returns true iff a is contained in b, entirely.
bool bops_traits.is_equal ( Point p1, Point p2)
returns true iff the value of p1 is equal to the value of p2.
bool bops_traits.less_x ( Point p1, Point p2)
returns true iff the x-coordinate of p1 is smaller than that of p2.
bool
bops_traits.is_leftturn ( Point p0,
Point p1,
Point p2)
returns true iff p2 lies on the left of the oriented line through p0 and p1.
Object bops_traits.Make_object ( Point p)
maps Point into Object and returns it.
Object bops_traits.Make_object ( Segment p)
maps Segment into Object and returns it.
Object bops_traits.Make_object ( Output_polygon p)
maps Output_polygon into Object and returns it.
Object bops_traits.Make_object ( Iso_rectangle p)
maps Iso_rectangle into Object and returns it.
Object bops_traits.Make_object ( Triangle p)
Maps Triangle into Object and returns it.
Bbox bops_traits.get_Bbox ( Polygon pgon)
returns the bounding box of Polygon.
bool
bops_traits.has_on_bounded_side ( Polygon pgon,
Point pt)
returns true iff point pt lies on the bounded side of polygon pgon.
void bops_traits.reverse_orientation(); ( Polygon& pgon)
reverses the orientation of polygon pgon.
Polygon_vertex_const_iterator
bops_traits.most_left_vertex ( Polygon pgon)
returns the most left vertex of polygon pgon.


Navigation: Up, Table of Contents, Bibliography, Index, Title Page
The CGAL Project. 22 January, 1999.