CGAL 5.1.3 - 3D Periodic Triangulations
|
#include <CGAL/Periodic_3_triangulation_3.h>
The class Periodic_3_triangulation_3
represents a 3-dimensional triangulation of a point set in \( \mathbb T_c^3\).
Traits | must be a model of the concept Periodic_3TriangulationTraits_3 . |
TDS | must be a model of the concept TriangulationDataStructure_3 with some additional functionality in cells and vertices. Its default value is Triangulation_data_structure_3<Triangulation_vertex_base_3<PT,Periodic_3_triangulation_ds_vertex_base_3<>>,Triangulation_cell_base_3<PT,Periodic_3_triangulation_ds_cell_base_3<>>> . |
Related Functions | |
(Note that these are not member functions.) | |
istream & | operator>> (istream &is, Periodic_3_triangulation_3 &t) |
Reads a triangulation from is and stores it in t . More... | |
ostream & | operator<< (ostream &os, const Periodic_3_triangulation_3 &t) |
Writes the triangulation t into os . More... | |
Types | |
typedef Traits | Geom_traits |
typedef TDS | Triangulation_data_structure |
typedef Geom_traits::Periodic_3_offset_3 | Offset |
typedef Geom_traits::Iso_cuboid_3 | Iso_cuboid |
A type representing an axis-aligned cuboid. More... | |
typedef array< int, 3 > | Covering_sheets |
Integer triple to store the number of sheets in each direction of space. | |
typedef TDS::Vertex::Point | Point |
The point type of the triangulation. More... | |
typedef Geom_traits::Point_3 | Point_3 |
The geometric basic 3D point type. | |
typedef Geom_traits::Segment_3 | Segment |
typedef Geom_traits::Triangle_3 | Triangle |
typedef Geom_traits::Tetrahedron_3 | Tetrahedron |
typedef std::pair< Point, Offset > | Periodic_point |
Represents a point-offset pair. More... | |
typedef std::pair< Point_3, Offset > | Periodic_point_3 |
Represents a point-offset pair. More... | |
typedef array< Periodic_point, 2 > | Periodic_segment |
A periodic segment. More... | |
typedef array< Periodic_point_3, 2 > | Periodic_segment_3 |
A periodic segment. More... | |
typedef array< Periodic_point, 3 > | Periodic_triangle |
A periodic triangle. More... | |
typedef array< Periodic_point_3, 3 > | Periodic_triangle_3 |
A periodic triangle. More... | |
typedef array< Periodic_point, 4 > | Periodic_tetrahedron |
A periodic tetrahedron. More... | |
typedef array< Periodic_point_3, 4 > | Periodic_tetrahedron_3 |
A periodic tetrahedron. More... | |
Only vertices ( \( 0\)-faces) and cells ( \( 3\)-faces) are stored. Edges ( \( 1\)-faces) and facets ( \( 2\)-faces) are not explicitly represented and thus there are no corresponding classes (see Section Representation). | |
typedef Triangulation_data_structure::Vertex | Vertex |
typedef Triangulation_data_structure::Cell | Cell |
typedef Triangulation_data_structure::Edge | Edge |
typedef Triangulation_data_structure::Facet | Facet |
The vertices and faces of the triangulations are accessed through A handle is a type which supports the two dereference operators and Iterators and circulators are convertible to the corresponding handles, thus the user can pass them directly as arguments to the functions. | |
typedef Triangulation_data_structure::Vertex_handle | Vertex_handle |
handle to a vertex | |
typedef Triangulation_data_structure::Cell_handle | Cell_handle |
handle to a cell | |
typedef Triangulation_data_structure::size_type | size_type |
Size type (an unsigned integral type) | |
typedef Triangulation_data_structure::difference_type | difference_type |
Difference type (a signed integral type) | |
typedef Triangulation_data_structure::Cell_iterator | Cell_iterator |
iterator over cells | |
typedef Triangulation_data_structure::Facet_iterator | Facet_iterator |
iterator over facets | |
typedef Triangulation_data_structure::Edge_iterator | Edge_iterator |
iterator over edges | |
typedef Triangulation_data_structure::Vertex_iterator | Vertex_iterator |
iterator over vertices | |
typedef unspecified_type | Unique_vertex_iterator |
iterator over the vertices whose corresponding points lie in the original domain, i.e. for each set of periodic copies the Unique_vertex_iterator iterates over exactly one representative. | |
typedef Triangulation_data_structure::Cell_circulator | Cell_circulator |
circulator over all cells incident to a given edge | |
typedef Triangulation_data_structure::Facet_circulator | Facet_circulator |
circulator over all facets incident to a given edge | |
Geometric Iterators: | |
The following iterators have value type | |
typedef unspecified_type | Periodic_tetrahedron_iterator |
iterator over the tetrahedra corresponding to cells of the triangulation. | |
typedef unspecified_type | Periodic_triangle_iterator |
iterator over the triangles corresponding to facets of the triangulation. | |
typedef unspecified_type | Periodic_segment_iterator |
iterator over the segments corresponding to edges of the triangulation. | |
typedef unspecified_type | Periodic_point_iterator |
iterator over the points corresponding to vertices of the triangulation. | |
Enums | |
enum | Locate_type { VERTEX =0, EDGE, FACET, CELL, EMPTY } |
The enum Locate_type is defined by Periodic_3_triangulation_3 to specify which case occurs when locating a point in the triangulation. More... | |
enum | Iterator_type { STORED =0, UNIQUE, STORED_COVER_DOMAIN, UNIQUE_COVER_DOMAIN } |
The enum Iterator_type is defined by Periodic_3_triangulation_3 to specify the behavior of geometric iterators. More... | |
Creation | |
Periodic_3_triangulation_3 (const Iso_cuboid &domain=Iso_cuboid(0, 0, 0, 1, 1, 1), const Geom_traits &traits=Geom_traits()) | |
Introduces an empty triangulation t with domain as original domain. More... | |
Periodic_3_triangulation_3 (const Periodic_3_triangulation_3 &tr) | |
Copy constructor. More... | |
Assignment | |
Periodic_3_triangulation_3 & | operator= (const Periodic_3_triangulation_3 &tr) |
The triangulation tr is duplicated, and modifying the copy after the duplication does not modify the original. More... | |
void | swap (Periodic_3_triangulation_3 &tr) |
The triangulations tr and t are swapped. More... | |
void | clear () |
Deletes all vertices and all cells of t . | |
template<class Traits , class TDS1 , class TDS2 > | |
bool | operator== (const Periodic_3_triangulation_3< Traits, TDS1 > &t1, const Periodic_3_triangulation_3< Traits, TDS2 > &t2) |
Equality operator. More... | |
template<class Traits , class TDS1 , class TDS2 > | |
bool | operator!= (const Periodic_3_triangulation_3< Traits, TDS1 > &t1, const Periodic_3_triangulation_3< Traits, TDS2 > &t2) |
The opposite of operator== . | |
Access Functions | |
const Geom_traits & | geom_traits () const |
Returns a const reference to the geometric traits object. | |
const Triangulation_data_structure & | tds () const |
Returns a const reference to the triangulation data structure. | |
Iso_cuboid | domain () const |
Returns the original domain. | |
Covering_sheets | number_of_sheets () const |
This is an advanced function. More... | |
Offset | neighbor_offset (Cell_handle ch, int i) const |
Get the offset between the origins of the internal offset coordinate systems of two neighboring cells with respect from ch to its i-th neighbor. | |
Non const access | |
void | set_domain (const Iso_cuboid dom) |
This is an advanced function. More... | |
Triangulation_data_structure & | tds () |
This is an advanced function. More... | |
Non-constant-time queries and conversions | |
bool | is_extensible_triangulation_in_1_sheet_h1 () const |
The current triangulation remains a triangulation in the 1-sheeted covering space even after adding points if this method returns true . More... | |
bool | is_extensible_triangulation_in_1_sheet_h2 () const |
The same as is_extensible_triangulation_in_1_sheet_h1() but with a more precise heuristic, i.e. it might answer true in cases in which is_extensible_triangulation_in_1_sheet_h1() would not. More... | |
bool | is_triangulation_in_1_sheet () const |
Returns true if the current triangulation would still be a triangulation in the 1-sheeted covering space, returns false otherwise. | |
void | convert_to_1_sheeted_covering () const |
Converts the current triangulation into the same periodic triangulation in the 1-sheeted covering space. More... | |
void | convert_to_27_sheeted_covering () const |
Converts the current triangulation into the same periodic triangulation in the 27-sheeted covering space. More... | |
Constant-time access functions | |
size_type | number_of_vertices () const |
Returns the number of vertices. More... | |
size_type | number_of_cells () const |
Returns the number of cells. More... | |
size_type | number_of_stored_vertices () const |
Returns the number of vertices in the data structure. More... | |
size_type | number_of_stored_cells () const |
Returns the number of cells in the data structure. More... | |
Non-constant-time access functions | |
size_type | number_of_edges () const |
Returns the number of edges. More... | |
size_type | number_of_facets () const |
Returns the number of facets. More... | |
size_type | number_of_stored_edges () const |
Returns the number of edges in the data structure. More... | |
size_type | number_of_stored_facets () const |
Returns the number of facets in the data structure. More... | |
Geometric Access Functions | |
The following functions return object of types | |
Periodic_point | periodic_point (const Vertex_handle v) const |
Returns the periodic point given by vertex v . More... | |
Periodic_point | periodic_point (const Cell_handle c, int i) const |
If t is represented in the 1-sheeted covering space, this function returns the periodic point given by the \( i\)-th vertex of cell c , that is the point in the original domain and the offset of the vertex in c . More... | |
Periodic_segment | periodic_segment (const Cell_handle c, int i, int j) const |
Returns the periodic segment formed by the two point-offset pairs corresponding to the two vertices of edge (c,i,j) . More... | |
Periodic_segment | periodic_segment (const Cell_handle c, Offset offset, int i, int j) const |
Returns the periodic segment formed by the two point-offset pairs corresponding to the two vertices of edge (c,i,j) . More... | |
Periodic_segment | periodic_segment (const Edge &e) const |
Same as the previous method for edge e . | |
Periodic_triangle | periodic_triangle (const Cell_handle c, int i) const |
Returns the periodic triangle formed by the three point-offset pairs corresponding to the three vertices of facet (c,i) . More... | |
Periodic_triangle | periodic_triangle (const Cell_handle c, Offset offset, int i) const |
Returns the periodic triangle formed by the three point-offset pairs corresponding to the three vertices of facet (c,i) . More... | |
Periodic_triangle | periodic_triangle (const Facet &f) const |
Same as the previous method for facet f . | |
Periodic_tetrahedron | periodic_tetrahedron (const Cell_handle c) const |
Returns the periodic tetrahedron formed by the four point-offset pairs corresponding to the four vertices of c . | |
Periodic_tetrahedron | periodic_tetrahedron (const Cell_handle c, Offset offset) const |
Returns the periodic tetrahedron formed by the four point-offset pairs corresponding to the four vertices of c . More... | |
Note that a traits class providing exact constructions should be used in order to guarantee the following operations to be exact (as opposed to computing the triangulation only, which requires only exact predicates). | |
template<typename PP > | |
Point_3 | construct_point (const PP &pp) const |
Converts the periodic point of type PP to a Point_3 . More... | |
Point_3 | construct_point (const Point &p) const |
Converts the Point p to a Point_3 . | |
template<typename P > | |
Point_3 | construct_point (const P &p1, const Offset &o1) const |
Same as above, with offsets. | |
template<typename PS > | |
Segment | construct_segment (const PS &s) const |
Converts the periodic segment of type PS to a Segment . More... | |
template<typename P > | |
Segment | construct_segment (const P &p1, const P &p2) const |
Creates a segment from two points. More... | |
template<typename P > | |
Segment | construct_segment (const P &p1, const P &p2, const Offset &o1, const Offset &o2) const |
Same as above, with offsets. | |
template<typename PT > | |
Triangle | construct_triangle (const PT &t) const |
Converts the periodic triangle of type PT to a Triangle . More... | |
template<typename P > | |
Triangle | construct_triangle (const P &p1, const P &p2, const P &p3) const |
Creates a triangle from three points. More... | |
template<typename P > | |
Triangle | construct_triangle (const P &p1, const P &p2, const P &p3, const Offset &o1, const Offset &o2, const Offset &o3) const |
Same as above, with offsets. | |
template<typename PT > | |
Tetrahedron | construct_tetrahedron (const PT &t) const |
Converts the periodic tetrahedron of type PT to a Tetrahedron . More... | |
template<typename P > | |
Tetrahedron | construct_tetrahedron (const P &p1, const P &p2, const P &p3, const P &p4) const |
Creates a tetrahedron from four points. More... | |
template<typename P > | |
Tetrahedron | construct_tetrahedron (const P &p1, const P &p2, const P &p3, const P &p4, const Offset &o1, const Offset &o2, const Offset &o3, const Offset &o4) const |
Same as above, with offsets. | |
Queries | |
bool | is_vertex (const Point &p, Vertex_handle &v) const |
Tests whether p is a vertex of t by locating p in the triangulation. More... | |
bool | is_vertex (Vertex_handle v) const |
Tests whether v is a vertex of t . | |
bool | is_edge (Vertex_handle u, Vertex_handle v, Cell_handle &c, int &i, int &j) const |
Tests whether (u,v) is an edge of t . More... | |
bool | is_edge (Vertex_handle u, const Offset &offu, Vertex_handle v, const Offset &offv, Cell_handle &c, int &i, int &j) const |
Tests whether ((u,offu),(v,offu)) is an edge of t . More... | |
bool | is_facet (Vertex_handle u, Vertex_handle v, Vertex_handle w, Cell_handle &c, int &i, int &j, int &k) const |
Tests whether (u,v,w) is a facet of t . More... | |
bool | is_facet (Vertex_handle u, const Offset &offu, Vertex_handle v, const Offset &offv, Vertex_handle w, const Offset &offw, Cell_handle &c, int &i, int &j, int &k) const |
Tests whether ((u,offu),(v,offv),(w,offw)) is a facet of t . More... | |
bool | is_cell (Cell_handle c) const |
Tests whether c is a cell of t . | |
bool | is_cell (Vertex_handle u, Vertex_handle v, Vertex_handle w, Vertex_handle x, Cell_handle &c, int &i, int &j, int &k, int &l) const |
Tests whether (u,v,w,x) is a cell of t . More... | |
bool | is_cell (Vertex_handle u, Vertex_handle v, Vertex_handle w, Vertex_handle x, Cell_handle &c) const |
Tests whether (u,v,w,x) is a cell of t and computes this cell c . More... | |
bool | is_cell (Vertex_handle u, const Offset &offu, Vertex_handle v, const Offset &offv, Vertex_handle w, const Offset &offw, Vertex_handle x, const Offset &offx, Cell_handle &c, int &i, int &j, int &k, int &l) const |
Tests whether ((u,offu),(v,offv),(w,offv),(x,offx)) is a cell of t . More... | |
bool | is_cell (Vertex_handle u, const Offset &offu, Vertex_handle v, const Offset &offv, Vertex_handle w, const Offset &offw, Vertex_handle x, const Offset &offx, Cell_handle &c) const |
Tests whether ((u,offu),(v,offv),(w,offv),(x,offx)) is a cell of t and computes this cell c . More... | |
There is a method The analogous methods for facets are defined here. | |
bool | has_vertex (const Facet &f, Vertex_handle v, int &j) const |
If v is a vertex of f , then j is the index of v in the cell f.first , and the method returns true . | |
bool | has_vertex (Cell_handle c, int i, Vertex_handle v, int &j) const |
Same for facet (c,i) . More... | |
bool | has_vertex (const Facet &f, Vertex_handle v) const |
bool | has_vertex (Cell_handle c, int i, Vertex_handle v) const |
Same as the first two methods, but these two methods do not return the index of the vertex. | |
The following three methods test whether two facets have the same vertices. | |
bool | are_equal (Cell_handle c, int i, Cell_handle n, int j) const |
bool | are_equal (const Facet &f, const Facet &g) const |
bool | are_equal (const Facet &f, Cell_handle n, int j) const |
Point Location | |
The class It provides also functions to test if a given point is inside a face or not. Note that the class | |
Cell_handle | locate (const Point &query, Cell_handle start=Cell_handle()) const |
Returns the cell that contains the query in its interior. More... | |
Cell_handle | locate (const Point &query, Offset &locate_offset, Cell_handle start=Cell_handle()) const |
Returns the cell that contains the query in its interior. More... | |
Cell_handle | inexact_locate (const Point &query, Cell_handle start=Cell_handle()) const |
Same as locate() but uses inexact predicates. More... | |
Cell_handle | locate (const Point &query, Locate_type <, int &li, int &lj, Cell_handle start=Cell_handle()) const |
The \( k\)-face that contains query in its interior is returned, by means of the cell returned together with lt , which is set to the locate type of the query (VERTEX, EDGE, FACET, CELL ) and two indices li and lj that specify the \( k\)-face of the cell containing query . More... | |
Cell_handle | locate (const Point &query, Offset &locate_offset, Locate_type <, int &li, int &lj, Cell_handle start=Cell_handle()) const |
The \( k\)-face that contains query in its interior is returned, by means of the cell returned together with lt , which is set to the locate type of the query (VERTEX, EDGE, FACET, CELL ) and two indices li and lj that specify the \( k\)-face of the cell containing query . More... | |
Bounded_side | side_of_cell (const Point &p, Cell_handle c, Locate_type <, int &li, int &lj) const |
Returns a value indicating on which side of the oriented boundary of c the point p lies. More... | |
Cell, Face, Edge and Vertex Iterators | |
The following iterators allow the user to visit cells, facets, edges and vertices of the stored triangulation, i.e. in case of computing in a multiply sheeted covering space all stored periodic copies of each item are returned. These iterators are non-mutable, bidirectional and their value types are respectively | |
Vertex_iterator | vertices_begin () const |
Starts at an arbitrary vertex. More... | |
Vertex_iterator | vertices_end () const |
Past-the-end iterator. | |
Edge_iterator | edges_begin () const |
Starts at an arbitrary edge. More... | |
Edge_iterator | edges_end () const |
Past-the-end iterator. | |
Facet_iterator | facets_begin () const |
Starts at an arbitrary facet. More... | |
Facet_iterator | facets_end () const |
Past-the-end iterator. | |
Cell_iterator | cells_begin () const |
Starts at an arbitrary cell. More... | |
Cell_iterator | cells_end () const |
Past-the-end iterator. | |
Unique_vertex_iterator | unique_vertices_begin () const |
Starts at an arbitrary vertex. More... | |
Unique_vertex_iterator | unique_vertices_end () const |
Past-the-end iterator. | |
Geometric Iterators | |
The following iterators allow the user to obtain geometric primitives corresponding to cells, facets, edges, and vertices of the triangulation. These iterators are non-mutable, bidirectional and their value types are respectively ![]() ![]() ![]() ![]() | |
Periodic_point_iterator | periodic_points_begin (Iterator_type it=STORED) const |
Iterates over the points of the triangulation. More... | |
Periodic_point_iterator | periodic_points_end (Iterator_type it=STORED) const |
Past-the-end iterator. More... | |
Periodic_segment_iterator | periodic_segments_begin (Iterator_type it=STORED) const |
Iterates over the segments of the triangulation. More... | |
Periodic_segment_iterator | periodic_segments_end (Iterator_type it=STORED) const |
Past-the-end iterator. More... | |
Periodic_triangle_iterator | periodic_triangles_begin (Iterator_type it=STORED) const |
Iterates over the triangles of the triangulation. More... | |
Periodic_triangle_iterator | periodic_triangles_end (Iterator_type it=STORED) const |
Past-the-end iterator. More... | |
Periodic_tetrahedron_iterator | periodic_tetrahedra_begin (Iterator_type it=STORED) const |
Iterates over the tetrahedra of the triangulation. More... | |
Periodic_tetrahedron_iterator | periodic_tetrahedra_end (Iterator_type it=STORED) const |
Past-the-end iterator. More... | |
Cell and Facet Circulators | |
The following circulators respectively visit all cells or all facets incident to a given edge. They are non-mutable and bidirectional. They are invalidated by any modification of one of the cells traversed. | |
Cell_circulator | incident_cells (Edge e) const |
Starts at an arbitrary cell incident to e . | |
Cell_circulator | incident_cells (Cell_handle c, int i, int j) const |
As above for edge (i,j) of c . | |
Cell_circulator | incident_cells (Edge e, Cell_handle start) const |
Starts at cell start . More... | |
Cell_circulator | incident_cells (Cell_handle c, int i, int j, Cell_handle start) const |
As above for edge (i,j) of c . | |
Facet_circulator | incident_facets (Edge e) const |
Starts at an arbitrary facet incident to e . | |
Facet_circulator | incident_facets (Cell_handle c, int i, int j) const |
As above for edge (i,j) of c . | |
Facet_circulator | incident_facets (Edge e, Facet start) const |
Starts at facet start . More... | |
Facet_circulator | incident_facets (Edge e, Cell_handle start, int f) const |
Starts at facet of index f in start . | |
Facet_circulator | incident_facets (Cell_handle c, int i, int j, Facet start) const |
As above for edge (i,j) of c . | |
Facet_circulator | incident_facets (Cell_handle c, int i, int j, Cell_handle start, int f) const |
As above for edge (i,j) of c and facet (start,f) . | |
Traversal of the Incident Cells and Facets, and the Adjacent Vertices of a Given Vertex | |
template<class OutputIterator > | |
OutputIterator | incident_cells (Vertex_handle v, OutputIterator cells) const |
Copies the Cell_handle s of all cells incident to v to the output iterator cells . More... | |
template<class OutputIterator > | |
OutputIterator | incident_facets (Vertex_handle v, OutputIterator facets) const |
Copies the Facet s incident to v to the output iterator facets . More... | |
template<class OutputIterator > | |
OutputIterator | incident_edges (Vertex_handle v, OutputIterator edges) const |
Copies the Edge s incident to v to the output iterator edges . More... | |
template<class OutputIterator > | |
OutputIterator | adjacent_vertices (Vertex_handle v, OutputIterator vertices) const |
Copies the Vertex_handle s of all vertices adjacent to v to the output iterator vertices . More... | |
size_type | degree (Vertex_handle v) const |
Returns the degree of a vertex, that is, the number of adjacent vertices. More... | |
Traversal Between Adjacent Cells | |
int | mirror_index (Cell_handle c, int i) const |
Returns the index of c in its \( i^{th}\) neighbor. More... | |
Vertex_handle | mirror_vertex (Cell_handle c, int i) const |
Returns the vertex of the \( i^{th}\) neighbor of c that is opposite to c . More... | |
Facet | mirror_facet (Facet f) const |
Returns the same facet viewed from the other adjacent cell. | |
Checking | |
Advanced
The responsibility of keeping a valid triangulation belongs to the user when using advanced operations allowing a direct manipulation of cells and vertices. We provide the user with the following methods to help debugging. | |
bool | is_valid (bool verbose=false) const |
Checks the combinatorial validity of the triangulation. More... | |
bool | is_valid (Cell_handle c, bool verbose=false) const |
Checks the combinatorial validity of the cell by calling the is_valid method of the Triangulation_data_structure cell class. More... | |
typedef Geom_traits::Iso_cuboid_3 CGAL::Periodic_3_triangulation_3< Traits, TDS >::Iso_cuboid |
A type representing an axis-aligned cuboid.
It must be a model of Traits::Iso_cuboid_3
. Used to represent the original domain.
typedef std::pair< Point, Offset > CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_point |
Represents a point-offset pair.
The point in the pair lies in the original domain. Note that the inner type is Point
.
typedef std::pair< Point_3, Offset > CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_point_3 |
Represents a point-offset pair.
The point in the pair lies in the original domain. Note that the inner type is Point_3
.
typedef array< Periodic_point, 2> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_segment |
A periodic segment.
Note that the inner type is Periodic_point
.
typedef array< Periodic_point_3, 2> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_segment_3 |
A periodic segment.
Note that the inner type is Periodic_point_3
.
typedef array< Periodic_point, 4> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_tetrahedron |
A periodic tetrahedron.
Note that the inner type is Periodic_point
.
typedef array< Periodic_point_3, 4> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_tetrahedron_3 |
A periodic tetrahedron.
Note that the inner type is Periodic_point_3
.
typedef array< Periodic_point, 3> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_triangle |
A periodic triangle.
Note that the inner type is Periodic_point
.
typedef array< Periodic_point_3, 3> CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_triangle_3 |
A periodic triangle.
Note that the inner type is Periodic_point_3
.
typedef TDS::Vertex::Point CGAL::Periodic_3_triangulation_3< Traits, TDS >::Point |
The point type of the triangulation.
Geom_traits::Point_3
when considering periodic Delaunay triangulations and to Geom_traits::Weighted_point_3
when considering periodic weighted Delaunay triangulations. enum CGAL::Periodic_3_triangulation_3::Iterator_type |
The enum Iterator_type
is defined by Periodic_3_triangulation_3
to specify the behavior of geometric iterators.
The elements of the enum have the following meaning:
CGAL::Periodic_3_triangulation_3
Enumerator | |
---|---|
STORED | Return all geometric primitives as they are stored internally in |
UNIQUE | Return only one representative of each geometric primitive even if the triangulation is computed in a multiply sheeted covering space. Choose the representative whose maximum offset is minimal but non-negative in each direction of space. |
STORED_COVER_DOMAIN | Same as STORED but return additionally all primitives whose intersection with the original domain of the current covering space is non-empty. |
UNIQUE_COVER_DOMAIN | Same as UNIQUE but return additionally all primitives whose intersection with the original domain is non-empty. |
enum CGAL::Periodic_3_triangulation_3::Locate_type |
The enum Locate_type
is defined by Periodic_3_triangulation_3
to specify which case occurs when locating a point in the triangulation.
If the triangulation does not contain any points EMPTY
is returned.
CGAL::Periodic_3_triangulation_3
Enumerator | |
---|---|
VERTEX | |
EDGE | |
FACET | |
CELL | |
EMPTY |
CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_3_triangulation_3 | ( | const Iso_cuboid & | domain = Iso_cuboid(0, 0, 0, 1, 1, 1) , |
const Geom_traits & | traits = Geom_traits() |
||
) |
Introduces an empty triangulation t
with domain
as original domain.
domain
is a cube. CGAL::Periodic_3_triangulation_3< Traits, TDS >::Periodic_3_triangulation_3 | ( | const Periodic_3_triangulation_3< Traits, TDS > & | tr | ) |
Copy constructor.
All vertices and faces are duplicated.
OutputIterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::adjacent_vertices | ( | Vertex_handle | v, |
OutputIterator | vertices | ||
) | const |
Copies the Vertex_handle
s of all vertices adjacent to v
to the output iterator vertices
.
Returns the resulting output iterator.
v
\( \neq\) Vertex_handle()
, t
.is_vertex(v)
. Cell_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::cells_begin | ( | ) | const |
Starts at an arbitrary cell.
Iterates over all cells. Returns cells_end()
if t
.number_of_vertices()
\( =0\).
Point_3 CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_point | ( | const PP & | pp | ) | const |
Converts the periodic point of type PP
to a Point_3
.
The type PP can be either Periodic_point
or Periodic_point_3
.
Segment CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_segment | ( | const PS & | s | ) | const |
Converts the periodic segment of type PS
to a Segment
.
The type PS
can be either Periodic_segment
or Periodic_segment_3
.
Segment CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_segment | ( | const P & | p1, |
const P & | p2 | ||
) | const |
Creates a segment from two points.
The type P
can be either Point
or Point_3
.
Tetrahedron CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_tetrahedron | ( | const PT & | t | ) | const |
Converts the periodic tetrahedron of type PT
to a Tetrahedron
.
The type PT
can be either Periodic_tetrahedron
or Periodic_tetrahedron_3
.
Tetrahedron CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_tetrahedron | ( | const P & | p1, |
const P & | p2, | ||
const P & | p3, | ||
const P & | p4 | ||
) | const |
Creates a tetrahedron from four points.
The type P
can be either Point
or Point_3
.
Triangle CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_triangle | ( | const PT & | t | ) | const |
Converts the periodic triangle of type PT
to a Triangle
.
The type PT
can be either Periodic_triangle
or Periodic_triangle_3
.
Triangle CGAL::Periodic_3_triangulation_3< Traits, TDS >::construct_triangle | ( | const P & | p1, |
const P & | p2, | ||
const P & | p3 | ||
) | const |
Creates a triangle from three points.
The type P
can be either Point
or Point_3
.
void CGAL::Periodic_3_triangulation_3< Traits, TDS >::convert_to_1_sheeted_covering | ( | ) | const |
Converts the current triangulation into the same periodic triangulation in the 1-sheeted covering space.
void CGAL::Periodic_3_triangulation_3< Traits, TDS >::convert_to_27_sheeted_covering | ( | ) | const |
Converts the current triangulation into the same periodic triangulation in the 27-sheeted covering space.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::degree | ( | Vertex_handle | v | ) | const |
Returns the degree of a vertex, that is, the number of adjacent vertices.
v
\( \neq\) Vertex_handle()
, t
.is_vertex(v)
. Edge_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::edges_begin | ( | ) | const |
Starts at an arbitrary edge.
Iterates over all edges. Returns edges_end()
if t
.number_of_vertices()
\( =0\).
Facet_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::facets_begin | ( | ) | const |
Starts at an arbitrary facet.
Iterates over all facets. Returns facets_end()
if t
.number_of_vertices()
\( =0\).
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::has_vertex | ( | Cell_handle | c, |
int | i, | ||
Vertex_handle | v, | ||
int & | j | ||
) | const |
Same for facet (c,i)
.
Computes the index j
of v
in c
.
Cell_circulator CGAL::Periodic_3_triangulation_3< Traits, TDS >::incident_cells | ( | Edge | e, |
Cell_handle | start | ||
) | const |
Starts at cell start
.
start
is incident to e
. OutputIterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::incident_cells | ( | Vertex_handle | v, |
OutputIterator | cells | ||
) | const |
Copies the Cell_handle
s of all cells incident to v
to the output iterator cells
.
Returns the resulting output iterator.
v
\( \neq\) Vertex_handle()
, t
.is_vertex(v)
. OutputIterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::incident_edges | ( | Vertex_handle | v, |
OutputIterator | edges | ||
) | const |
Copies the Edge
s incident to v
to the output iterator edges
.
Returns the resulting output iterator.
v
\( \neq\) Vertex_handle()
, t
.is_vertex(v)
. Facet_circulator CGAL::Periodic_3_triangulation_3< Traits, TDS >::incident_facets | ( | Edge | e, |
Facet | start | ||
) | const |
Starts at facet start
.
start
is incident to e
. OutputIterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::incident_facets | ( | Vertex_handle | v, |
OutputIterator | facets | ||
) | const |
Copies the Facet
s incident to v
to the output iterator facets
.
Returns the resulting output iterator.
v
\( \neq\) Vertex_handle()
, t
.is_vertex(v)
. Cell_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::inexact_locate | ( | const Point & | query, |
Cell_handle | start = Cell_handle() |
||
) | const |
Same as locate()
but uses inexact predicates.
This function returns a handle on a cell that is a good approximation of the exact location of query
, while being faster. Note that it may return a handle on a cell whose interior does not contain query
.
Note that this function is available only if the Cartesian coordinates of query
are accessible with functions x()
, y()
and z()
.
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_cell | ( | Vertex_handle | u, |
Vertex_handle | v, | ||
Vertex_handle | w, | ||
Vertex_handle | x, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j, | ||
int & | k, | ||
int & | l | ||
) | const |
Tests whether (u,v,w,x)
is a cell of t
.
If the cell c
is found, the method computes the indices i
, j
, k
and l
of the vertices u
, v
, w
and x
in c
, in this order.
u
, v
, w
and x
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_cell | ( | Vertex_handle | u, |
Vertex_handle | v, | ||
Vertex_handle | w, | ||
Vertex_handle | x, | ||
Cell_handle & | c | ||
) | const |
Tests whether (u,v,w,x)
is a cell of t
and computes this cell c
.
u
, v
, w
and x
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_cell | ( | Vertex_handle | u, |
const Offset & | offu, | ||
Vertex_handle | v, | ||
const Offset & | offv, | ||
Vertex_handle | w, | ||
const Offset & | offw, | ||
Vertex_handle | x, | ||
const Offset & | offx, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j, | ||
int & | k, | ||
int & | l | ||
) | const |
Tests whether ((u,offu),(v,offv),(w,offv),(x,offx))
is a cell of t
.
If the cell c
is found, the method computes the indices i
, j
, k
and l
of the vertices u
, v
, w
and x
in c
, in this order.
u
, v
, w
and x
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_cell | ( | Vertex_handle | u, |
const Offset & | offu, | ||
Vertex_handle | v, | ||
const Offset & | offv, | ||
Vertex_handle | w, | ||
const Offset & | offw, | ||
Vertex_handle | x, | ||
const Offset & | offx, | ||
Cell_handle & | c | ||
) | const |
Tests whether ((u,offu),(v,offv),(w,offv),(x,offx))
is a cell of t
and computes this cell c
.
u
, v
, w
and x
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_edge | ( | Vertex_handle | u, |
Vertex_handle | v, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j | ||
) | const |
Tests whether (u,v)
is an edge of t
.
If the edge is found, it gives a cell c
having this edge and the indices i
and j
of the vertices u
and v
in c
, in this order.
u
and v
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_edge | ( | Vertex_handle | u, |
const Offset & | offu, | ||
Vertex_handle | v, | ||
const Offset & | offv, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j | ||
) | const |
Tests whether ((u,offu),(v,offu))
is an edge of t
.
If the edge is found, it gives a cell c
having this edge and the indices i
and j
of the vertices u
and v
in c
, in this order.
u
and v
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_extensible_triangulation_in_1_sheet_h1 | ( | ) | const |
The current triangulation remains a triangulation in the 1-sheeted covering space even after adding points if this method returns true
.
This test relies on a heuristic, i.e. if it answers false
nothing is known. This test runs in constant-time when not computing in the 1-sheeted covering space. (This test uses the length of the longest edge in the triangulation as a criterion [1].)
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_extensible_triangulation_in_1_sheet_h2 | ( | ) | const |
The same as is_extensible_triangulation_in_1_sheet_h1()
but with a more precise heuristic, i.e. it might answer true
in cases in which is_extensible_triangulation_in_1_sheet_h1()
would not.
However, it is much less time efficient when not computing in the 1-sheeted covering space. (This test uses the diameter of the largest empty ball in the input point set as a criterion [1].)
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_facet | ( | Vertex_handle | u, |
Vertex_handle | v, | ||
Vertex_handle | w, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j, | ||
int & | k | ||
) | const |
Tests whether (u,v,w)
is a facet of t
.
If the facet is found, it computes a cell c
having this facet and the indices i
, j
and k
of the vertices u
, v
and w
in c
, in this order.
u
, v
and w
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_facet | ( | Vertex_handle | u, |
const Offset & | offu, | ||
Vertex_handle | v, | ||
const Offset & | offv, | ||
Vertex_handle | w, | ||
const Offset & | offw, | ||
Cell_handle & | c, | ||
int & | i, | ||
int & | j, | ||
int & | k | ||
) | const |
Tests whether ((u,offu),(v,offv),(w,offw))
is a facet of t
.
If the facet is found, it computes a cell c
having this facet and the indices i
, j
and k
of the vertices u
, v
and w
in c
, in this order.
u
, v
and w
are vertices of t
. bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_valid | ( | bool | verbose = false | ) | const |
Checks the combinatorial validity of the triangulation.
Checks also the validity of its geometric embedding (see Section Representation). When verbose
is set to true, messages describing the first invalidity encountered are printed.
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_valid | ( | Cell_handle | c, |
bool | verbose = false |
||
) | const |
Checks the combinatorial validity of the cell by calling the is_valid
method of the Triangulation_data_structure
cell class.
Also checks the geometric validity of c
, if c
is finite. (See Section Representation.)
When verbose
is set to true
, messages are printed to give a precise indication of the kind of invalidity encountered.
bool CGAL::Periodic_3_triangulation_3< Traits, TDS >::is_vertex | ( | const Point & | p, |
Vertex_handle & | v | ||
) | const |
Tests whether p
is a vertex of t
by locating p
in the triangulation.
If p
is found, the associated vertex v
is given.
p
lies in the original domain domain
. Cell_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::locate | ( | const Point & | query, |
Cell_handle | start = Cell_handle() |
||
) | const |
Returns the cell that contains the query in its interior.
If query
lies on a facet, an edge or on a vertex, one of the cells having query
on its boundary is returned.
The optional argument start
is used as a starting place for the search.
query
lies in the original domain domain
. Cell_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::locate | ( | const Point & | query, |
Offset & | locate_offset, | ||
Cell_handle | start = Cell_handle() |
||
) | const |
Returns the cell that contains the query in its interior.
If query
lies on a facet, an edge or on a vertex, one of the cells having query
on its boundary is returned.
locate_offset
is the offset that must be used by the function periodic_tetrahedron() together with the returned cell, so that the constructed Periodic_tetrahedron contains the query point.
The optional argument start
is used as a starting place for the search.
query
lies in the original domain domain
. Cell_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::locate | ( | const Point & | query, |
Locate_type & | lt, | ||
int & | li, | ||
int & | lj, | ||
Cell_handle | start = Cell_handle() |
||
) | const |
The \( k\)-face that contains query
in its interior is returned, by means of the cell returned together with lt
, which is set to the locate type of the query (VERTEX, EDGE, FACET, CELL
) and two indices li
and lj
that specify the \( k\)-face of the cell containing query
.
If the \( k\)-face is a cell, li
and lj
have no meaning; if it is a facet (resp. vertex), li
gives the index of the facet (resp. vertex) and lj
has no meaning; if it is an edge, li
and lj
give the indices of its vertices.
If there is no vertex in the triangulation yet, lt
is set to EMPTY
and locate
returns the default constructed handle.
The optional argument start
is used as a starting place for the search.
query
lies in the original domain domain
. Cell_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::locate | ( | const Point & | query, |
Offset & | locate_offset, | ||
Locate_type & | lt, | ||
int & | li, | ||
int & | lj, | ||
Cell_handle | start = Cell_handle() |
||
) | const |
The \( k\)-face that contains query
in its interior is returned, by means of the cell returned together with lt
, which is set to the locate type of the query (VERTEX, EDGE, FACET, CELL
) and two indices li
and lj
that specify the \( k\)-face of the cell containing query
.
If the \( k\)-face is a cell, li
and lj
have no meaning; if it is a facet (resp. vertex), li
gives the index of the facet (resp. vertex) and lj
has no meaning; if it is an edge, li
and lj
give the indices of its vertices.
If there is no vertex in the triangulation yet, lt
is set to EMPTY
and locate
returns the default constructed handle.
locate_offset
is the offset that must be used by the function periodic_tetrahedron() together with the returned cell, so that the constructed Periodic_tetrahedron contains the query point.
The optional argument start
is used as a starting place for the search.
query
lies in the original domain domain
. int CGAL::Periodic_3_triangulation_3< Traits, TDS >::mirror_index | ( | Cell_handle | c, |
int | i | ||
) | const |
Returns the index of c
in its \( i^{th}\) neighbor.
Vertex_handle CGAL::Periodic_3_triangulation_3< Traits, TDS >::mirror_vertex | ( | Cell_handle | c, |
int | i | ||
) | const |
Returns the vertex of the \( i^{th}\) neighbor of c
that is opposite to c
.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_cells | ( | ) | const |
Returns the number of cells.
Counts all cells that are representatives of the same tetrahedron in \( \mathbb T_c^3\) as one cell.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_edges | ( | ) | const |
Returns the number of edges.
Counts all edges that are representatives of the same segment in \( \mathbb T_c^3\) as one edge.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_facets | ( | ) | const |
Returns the number of facets.
Counts all facets that are representatives of the same triangle in \( \mathbb T_c^3\) as one facet.
Covering_sheets CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_sheets | ( | ) | const |
This is an advanced function.
Returns the number of sheets of the covering space the triangulation is currently computed in.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_stored_cells | ( | ) | const |
Returns the number of cells in the data structure.
This is the same as the number of sheets times number_of_cells()
.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_stored_edges | ( | ) | const |
Returns the number of edges in the data structure.
This is the same as the number of sheets times number_of_edges()
.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_stored_facets | ( | ) | const |
Returns the number of facets in the data structure.
This is the same as the number of sheets times number_of_facets()
.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_stored_vertices | ( | ) | const |
Returns the number of vertices in the data structure.
This is the same as the number of sheets times number_of_vertices()
.
size_type CGAL::Periodic_3_triangulation_3< Traits, TDS >::number_of_vertices | ( | ) | const |
Returns the number of vertices.
Counts all vertices that are representatives of the same point in \( \mathbb T_c^3\) as one vertex.
Periodic_3_triangulation_3& CGAL::Periodic_3_triangulation_3< Traits, TDS >::operator= | ( | const Periodic_3_triangulation_3< Traits, TDS > & | tr | ) |
The triangulation tr
is duplicated, and modifying the copy after the duplication does not modify the original.
The previous triangulation held by t
is deleted.
Periodic_point CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_point | ( | const Vertex_handle | v | ) | const |
Returns the periodic point given by vertex v
.
If t
is represented in the 1-sheeted covering space, the offset is always zero. Otherwise v
can correspond to a periodic copy outside domain
of an input point.
Periodic_point CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_point | ( | const Cell_handle | c, |
int | i | ||
) | const |
If t
is represented in the 1-sheeted covering space, this function returns the periodic point given by the \( i\)-th vertex of cell c
, that is the point in the original domain and the offset of the vertex in c
.
If t
is represented in the 27-sheeted covering space, this offset is possibly added to another offset determining the periodic copy.
Periodic_point_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_points_begin | ( | Iterator_type | it = STORED | ) | const |
Iterates over the points of the triangulation.
Its behavior is defined by the Iterator_type
it
as described on CGAL::Periodic_3_triangulation_3::Iterator_type.
Periodic_point_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_points_end | ( | Iterator_type | it = STORED | ) | const |
Past-the-end iterator.
Note that to match another Periodic_point_iterator
both must have the same Iterator_type
it
.
Periodic_segment CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_segment | ( | const Cell_handle | c, |
int | i, | ||
int | j | ||
) | const |
Returns the periodic segment formed by the two point-offset pairs corresponding to the two vertices of edge (c,i,j)
.
Periodic_segment CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_segment | ( | const Cell_handle | c, |
Offset | offset, | ||
int | i, | ||
int | j | ||
) | const |
Returns the periodic segment formed by the two point-offset pairs corresponding to the two vertices of edge (c,i,j)
.
A translation in accordance with offset
is applied on the point-offet pairs.
Periodic_segment_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_segments_begin | ( | Iterator_type | it = STORED | ) | const |
Iterates over the segments of the triangulation.
Its behavior is defined by the Iterator_type
it
as described on CGAL::Periodic_3_triangulation_3::Iterator_type.
Periodic_segment_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_segments_end | ( | Iterator_type | it = STORED | ) | const |
Past-the-end iterator.
Note that to match another Periodic_segment_iterator
both must have the same Iterator_type
it
.
Periodic_tetrahedron_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_tetrahedra_begin | ( | Iterator_type | it = STORED | ) | const |
Iterates over the tetrahedra of the triangulation.
Its behavior is defined by the Iterator_type
it
as described on CGAL::Periodic_3_triangulation_3::Iterator_type.
Periodic_tetrahedron_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_tetrahedra_end | ( | Iterator_type | it = STORED | ) | const |
Past-the-end iterator.
Note that to match another Periodic_tetrahedron_iterator
both must have the same Iterator_type
it
.
Periodic_tetrahedron CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_tetrahedron | ( | const Cell_handle | c, |
Offset | offset | ||
) | const |
Returns the periodic tetrahedron formed by the four point-offset pairs corresponding to the four vertices of c
.
A translation in accordance with offset
is applied on the point-offet pairs.
Periodic_triangle CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_triangle | ( | const Cell_handle | c, |
int | i | ||
) | const |
Returns the periodic triangle formed by the three point-offset pairs corresponding to the three vertices of facet (c,i)
.
The triangle is oriented so that its normal points to the inside of cell c
.
Periodic_triangle CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_triangle | ( | const Cell_handle | c, |
Offset | offset, | ||
int | i | ||
) | const |
Returns the periodic triangle formed by the three point-offset pairs corresponding to the three vertices of facet (c,i)
.
A translation in accordance with offset
is applied on the point-offet pairs.
The triangle is oriented so that its normal points to the inside of cell c
.
Periodic_triangle_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_triangles_begin | ( | Iterator_type | it = STORED | ) | const |
Iterates over the triangles of the triangulation.
Its behavior is defined by the Iterator_type
it
as described on CGAL::Periodic_3_triangulation_3::Iterator_type.
Periodic_triangle_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::periodic_triangles_end | ( | Iterator_type | it = STORED | ) | const |
Past-the-end iterator.
Note that to match another Periodic_triangle_iterator
both must have the same Iterator_type
it
.
void CGAL::Periodic_3_triangulation_3< Traits, TDS >::set_domain | ( | const Iso_cuboid | dom | ) |
This is an advanced function.
Changes the domain. Note that this function calls clear()
, i.e., it erases the existing triangulation.
Bounded_side CGAL::Periodic_3_triangulation_3< Traits, TDS >::side_of_cell | ( | const Point & | p, |
Cell_handle | c, | ||
Locate_type & | lt, | ||
int & | li, | ||
int & | lj | ||
) | const |
Returns a value indicating on which side of the oriented boundary of c
the point p
lies.
More precisely, it returns:
ON_BOUNDED_SIDE
if p
is inside the cell.ON_BOUNDARY
if p
on the boundary of the cell. Then lt
together with li
and lj
give the precise location on the boundary. (See the descriptions of the locate
methods.)ON_UNBOUNDED_SIDE
if p
lies outside the cell. query
lies in the original domain domain
. void CGAL::Periodic_3_triangulation_3< Traits, TDS >::swap | ( | Periodic_3_triangulation_3< Traits, TDS > & | tr | ) |
The triangulations tr
and t
are swapped.
t
.swap(tr)
should be preferred to t
= tr
or to t(tr)
if tr
is deleted after that. Indeed, there is no copy of cells and vertices, thus this method runs in constant time.
Triangulation_data_structure& CGAL::Periodic_3_triangulation_3< Traits, TDS >::tds | ( | ) |
This is an advanced function.
Returns a reference to the triangulation data structure.
The responsibility of keeping a valid triangulation belongs to the user when using advanced operations allowing a direct manipulation of the tds
. This method is mainly a help for users implementing their own triangulation algorithms.
Unique_vertex_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::unique_vertices_begin | ( | ) | const |
Starts at an arbitrary vertex.
Iterates over all vertices whose corresponding points lie in the original domain, i.e. for each set of periodic copies the Unique_vertex_iterator
iterates over exactly one representative. Returns unique_vertices_end()
if t
.number_of_vertices()
\( =0\).
Vertex_iterator CGAL::Periodic_3_triangulation_3< Traits, TDS >::vertices_begin | ( | ) | const |
Starts at an arbitrary vertex.
Iterates over all vertices. Returns vertices_end()
if t
.number_of_vertices()
\( =0\).
|
related |
Writes the triangulation t
into os
.
The information in the iostream
is:
number_of_sheets()
|
related |
Equality operator.
Returns true iff there exist a bijection between the vertices of t1
and those of t2
and a bijection between the cells of t1
and those of t2
, which preserve the geometry of the triangulation, that is, the points of each corresponding pair of vertices are equal, and the tetrahedra corresponding to each pair of cells are equal (up to a permutation of their vertices).
|
related |
Reads a triangulation from is
and stores it in t
.
is
has the below described format.The information in the iostream
is:
number_of_sheets()