33#ifndef __H__UG_delaunay_info_impl
34#define __H__UG_delaunay_info_impl
40template <
class TAAPos>
43init_marks(TIter trisBegin, TIter trisEnd,
bool pushFlipCandidates)
48 for(TIter iter = trisBegin; iter != trisEnd; ++iter){
54 for(
size_t i = 0; i < 3; ++i){
55 set_mark(f->
vertex(i), INNER);
61 for(TIter triIter = trisBegin; triIter != trisEnd; ++triIter){
63 m_grid.associated_elements(edges, t);
64 for(
size_t i = 0; i < edges.size(); ++i){
72 if(m_cbConstrainedEdge(e)){
74 set_mark(e->
vertex(0), SEGMENT);
75 set_mark(e->
vertex(1), SEGMENT);
81 if(numNbrs == 2 && is_inner(nbrFaces[0])
82 && is_inner(nbrFaces[1]))
85 if(pushFlipCandidates)
91 set_mark(e->
vertex(0), SEGMENT);
92 set_mark(e->
vertex(1), SEGMENT);
102 AAPos aaPos = position_accessor();
104 m_grid.begin_marking();
105 for(TIter triIter = trisBegin; triIter != trisEnd; ++triIter){
109 for(
size_t ivrt = 0; ivrt < numVrts; ++ivrt){
111 if(m_grid.is_marked(vrt))
115 if(mark(vrt) != SEGMENT)
120 bool searching =
true;
121 m_grid.associated_elements(edges, vrt);
122 for(
size_t iedge = 0; (iedge < edges.size()) && searching; ++iedge){
123 Edge* edge = edges[iedge];
124 if(mark(edge) != SEGMENT)
132 for(
size_t iotherEdge = iedge + 1; iotherEdge < edges.size(); ++iotherEdge){
133 Edge* otherEdge = edges[iotherEdge];
134 if(mark(otherEdge) != SEGMENT)
149 m_grid.end_marking();
153template <
class TAAPos>
154template <
class TElem>
159 return (m == INNER) || (m == NEW_INNER);
163template <
class TAAPos>
164template <
class TElem>
169 return (m == SEGMENT) || (m == NEW_SEGMENT) || (m == DART) || (m == SHELL);
bool is_inner(TElem *e)
returns true if the specified element is either marked as INNER or as NEW_INNER
Definition delaunay_info_impl.h:156
void init_marks(TIter trisBegin, TIter trisEnd, bool pushFlipCandidates)
Definition delaunay_info_impl.h:43
TAAPos::ValueType vector_t
Definition delaunay_info.h:51
Mark
Definition delaunay_info.h:54
TAAPos AAPos
Definition delaunay_info.h:50
bool is_segment(TElem *e)
returns true if the specified element is either marked as SEGMENT, NEW_SEGMENT, DART or SHELL
Definition delaunay_info_impl.h:166
Base-class for edges.
Definition grid_base_objects.h:397
virtual Vertex * vertex(size_t index) const
Definition grid_base_objects.h:366
Faces are 2-dimensional objects.
Definition grid_base_objects.h:510
virtual ConstVertexArray vertices() const
Definition grid_base_objects.h:487
virtual size_t num_vertices() const
Definition grid_base_objects.h:488
virtual Vertex * vertex(size_t index) const
Definition grid_base_objects.h:486
Vertex *const * ConstVertexArray
Definition grid_base_objects.h:319
Base-class for all vertex-types.
Definition grid_base_objects.h:231
int GetAssociatedFaces(Face **facesOut, Grid &grid, Edge *e, int maxNumFaces)
writes associated faces of e to facesOut.
Definition edge_util.cpp:186
Vertex * GetConnectedVertex(Edge *e, Vertex *v)
returns the vertex that is connected to v via e.
Definition vertex_util.cpp:78
void VecSubtract(vector_t &vOut, const vector_t &v1, const vector_t &v2)
subtracts v2 from v1 and stores the result in a vOut
Definition math_vector_functions_common_impl.hpp:226
vector_t::value_type VecAngle(const vector_t &v1, const vector_t &v2)
returns the angle between two vectors in radiants
Definition math_vector_functions_common_impl.hpp:401
Definition smart_pointer.h:814
const number PI
Definition math_constants.h:45
const number SMALL
Definition math_constants.h:41
@ NONE
Definition data_import.h:44
PointerConstArray< Edge * > secure_container
Definition grid.h:146