33 #ifndef __H__UG_delaunay_info_impl
34 #define __H__UG_delaunay_info_impl
40 template <
class TAAPos>
41 template <
class TIter>
43 init_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();
153 template <
class TAAPos>
154 template <
class TElem>
159 return (m == INNER) || (m == NEW_INNER);
163 template <
class TAAPos>
164 template <
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 Vertex * vertex(size_t index) const
Definition: grid_base_objects.h:486
virtual size_t num_vertices() const
Definition: grid_base_objects.h:488
Vertex *const * ConstVertexArray
Definition: grid_base_objects.h:319
Container which holds an array of pointers.
Definition: pointer_const_array.h:84
size_t size() const
returns the size of the associated array.
Definition: pointer_const_array_impl.hpp:106
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