CGAL::Explorer

Definition

An instance E of the data type Explorer is a decorator to explore the structure of the plane map underlying the Nef polyhedron. It inherits all topological adjacency exploration operations from Topological_explorer. Explorer additionally allows one to explore the geometric embedding.

The position of each vertex is given by a so-called extended point, which is either a standard affine point or the tip of a ray touching an infinimaximal square frame centered at the origin. A vertex v is called a standard vertex if its embedding is a standard point and non-standard if its embedding is a non-standard point. By the straightline embedding of their source and target vertices, edges correspond to either affine segments, rays or lines or are part of the bounding frame.

Figure:  Extended geometry: standard vertices are marked by S, non-standard vertices are marked by N. A: The possible embeddings of edges: an affine segment s1, an affine ray s2, an affine line s3. B: A plane map embedded by extended geometry: note that the frame is arbitrarily large, the 6 vertices on the frame are at infinity, the two faces represent a geometrically unbounded area, however they are topologically closed by the frame edges. No standard point can be placed outside the frame.

Extended geometry

Inherits From

Topological_explorer

Types

Explorer::Point
the point type of finite vertices.


Explorer::Ray
the ray type of vertices on the frame.

Iterators, handles, and circulators are inherited from Topological_explorer.

Creation

Explorer is copy constructable and assignable. An object can be obtained via the Nef_polyhedron_2::explorer() method of Nef_polyhedron_2.

Operations

bool E.is_standard ( Vertex_const_handle v)
returns true iff v's position is a standard point.

Point E.point ( Vertex_const_handle v)
returns the standard point that is the embedding of v.
Precondition: E.is_standard(v).

Ray E.ray ( Vertex_const_handle v)
returns the ray defining the non-standard point on the frame.
Precondition: !E.is_standard(v).

bool E.is_frame_edge ( Halfedge_const_handle e)
returns true iff e is part of the infinimaximal frame.