## 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.

### 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.