Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HDS_accessor.h
Go to the documentation of this file.
1 /* *******************************************************************
2  * Rocstar Simulation Suite *
3  * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4  * *
5  * Illinois Rocstar LLC *
6  * Champaign, IL *
7  * www.illinoisrocstar.com *
8  * sales@illinoisrocstar.com *
9  * *
10  * License: See LICENSE file in top level of distribution package or *
11  * http://opensource.org/licenses/NCSA *
12  *********************************************************************/
13 /* *******************************************************************
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17  * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21  * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22  *********************************************************************/
23 
24 // $Id: HDS_accessor.h,v 1.9 2008/12/06 08:43:27 mtcampbe Exp $
25 
26 //=======================================================================
27 // This file contains the definition of an accessor of the halfedge data
28 // structure (HDS). The overlay algorithms uses this accessor to access
29 // information of HDS instead of directly using member functions of HDS.
30 // Note that the accessor is not meant to substitute
31 // Halfedge_data_structure_decorator, which supports functions to
32 // create/modify the HDS. HDS_accessor mainly supports read operations
33 // for the HDS structure, with few overlay-related access operations.
34 //
35 // Author: Xiangmin Jiao
36 // Last modified: Feb. 09, 2001
37 //=======================================================================
38 
39 #ifndef RFC_HDS_ACCESSOR_H
40 #define RFC_HDS_ACCESSOR_H
41 
42 #include "rfc_basic.h"
43 #include "RFC_Window_overlay.h"
44 
46 
47 template < class _MP=Tag_false>
48 class HDS_accessor {
49 public:
50 
51 // TYPES
52 // ----------------------------------
53  typedef HDS_overlay HDS;
57 
58  // Point needed for Vertex constructor for efficiency reasons.
59  typedef typename HDS::Point Point;
60  typedef Vector_3 Vector;
61 
62 // The following types are equal to either `Tag_true' or `Tag_false',
63 // dependant whether the named feature is supported or not.
64 
66 
67 // CREATION
68 // ----------------------------------
69 
70  // HDS_accessor() {}
71 
72 // Access Functions
73 // ----------------------------------
74 
76  // returns the incident halfedge of a vertex v. If supports connected
77  // panes, return the primary copy of the halfedge.
79  }
80 
81  Vertex* get_vertex( Halfedge* h) const {
82  // returns the incident vertex of h. If supports connected
83  // panes, return the primary copy of the vertex.
84  return get_vertex( h, Supports_multiple_panes());
85  }
86 
87  Vertex* get_origin( Halfedge* h) const {
88  // returns the incident vertex of h. If supports connected
89  // panes, return the primary copy of the vertex.
90  return get_vertex( get_opposite(h,Tag_false()));
91  }
92 
94  // returns the incident vertex of h. If supports connected
95  // panes, return the primary copy of the vertex.
96  return get_vertex( h);
97  }
98 
100  // Get the opposite halfedge of h. If supports connected
101  // panes, return the primary copy of the opposite halfedge.
103  }
104 
105  inline Halfedge* get_prev( Halfedge* h) const
106  { return (Halfedge*)get_prev( (const Halfedge*)h); }
107 
108  inline Halfedge* get_next( Halfedge* h) const
109  { return (Halfedge*)get_next( (const Halfedge*)h); }
110 
111  Facet* get_facet( Halfedge* h) const {
112  // returns the incident facet of h.
113  return h->facet();
114  }
115 
117  // returns the incident halfedge of f.
118  // Note that the halfedge is necessarily a primary copy.
119  return f->halfedge();
120  }
121 
123  { return v?get_primary( v, Supports_multiple_panes()):v; }
124 
125  HDS_overlay *get_hds( Vertex *v) const { return v->pane()->hds(); }
126  HDS_overlay *get_hds( Halfedge *h) const { return get_hds(h->vertex()); }
127 
128  RFC_Pane_overlay *get_pane( Vertex *v) const { return v->pane(); }
129  RFC_Pane_overlay *get_pane( Halfedge *h) const { return get_pane(h->vertex()); }
130 
132  // returns the previous halfedge around h->origin().
133  return get_opposite( get_prev( h));
134  }
135 
137  // returns the next halfedge around h->origin().
138  return get_next( get_opposite( h));
139  }
140 
142  // returns the previous halfedge around h->destination().
143  return get_prev( get_opposite( h));
144  }
145 
147  // returns the next halfedge around h->destination().
148  return get_opposite( get_next( h));
149  }
150 
151 // Const Access Functions
152 // ----------------------------------
153  bool is_border( const Halfedge *h) const
154  { return is_border( h, Supports_multiple_panes()); }
155  bool is_border( const Halfedge *h, Tag_false) const
156  { return h->is_border(); }
157  bool is_border( const Halfedge *h, Tag_true) const
158  { return get_pane(h)->is_physical_border(h); }
159 
160  bool is_border( const Vertex *v) const
161  { return is_border( v, Supports_multiple_panes()); }
162  // Precondition for is_border( v) is HDS boundary vertices normalized.
163  bool is_border( const Vertex *v, Tag_false) const
164  { return v->halfedge()->is_border(); }
165  bool is_border( const Vertex *v, Tag_true) const {
166  if ( !v->halfedge()->is_border()) return false;
167  const Halfedge *h = get_halfedge( v), *h0=h;
168  do {
169  if (h->is_border()) return true;
170  } while ( ( h=get_next_around_destination( h)) != h0);
171  return false;
172  }
173 
174  bool is_on_feature( const Vertex *v) const
175  { const Vertex *vprim = get_primary( v);
176  return get_pane(vprim)->is_on_feature(vprim);
177  }
178 
179  bool is_feature_0( const Vertex *v) const
180  { const Vertex *vprim = get_primary( v);
181  return get_pane(vprim)->is_feature_0(vprim);
182  }
183 
184  bool is_feature_1( const Halfedge *h) const
185  { return get_pane(h)->is_feature_1(h); }
186 
187  bool is_primary( const Vertex *v) const { return get_pane(v)->is_primary(v);}
188 
189  const Vertex* get_primary( const Vertex *v) const
190  { return v?get_primary( v, Supports_multiple_panes()):v; }
191 
192  const Halfedge* get_halfedge( const Vertex* v) const {
193  // returns the incident halfedge of a vertex v. If supports connected
194  // panes, return the primary copy of the halfedge.
196  }
197 
198  const Vertex* get_vertex( const Halfedge* h) const {
199  // returns the incident vertex of h. If supports connected
200  // panes, return the primary copy of the vertex.
201  return get_vertex( h, Supports_multiple_panes());
202  }
203 
204  const Vertex* get_origin( const Halfedge* h) const {
205  // returns the incident vertex of h. If supports connected
206  // panes, return the primary copy of the vertex.
207  return get_vertex( get_opposite(h,Tag_false()));
208  }
209 
210  const Vertex* get_destination( const Halfedge* h) const {
211  // returns the incident vertex of h. If supports connected
212  // panes, return the primary copy of the vertex.
213  return get_vertex( h);
214  }
215 
216  const Halfedge* get_opposite( const Halfedge *h) const {
217  // Get the opposite halfedge of h. If supports connected
218  // panes, return the primary copy of the opposite halfedge.
220  }
221 
222  const Halfedge* get_prev( const Halfedge* h) const {
223  const Halfedge *prev = h->prev();
224  if ( !is_border( h)) return prev;
225 
226  RFC_assertion_code( int count=0);
227  while ( !is_border(prev)) {
228  RFC_assertion( prev->is_border());
229  prev = get_counterpart(prev)->opposite()->prev();
230  RFC_assertion( is_border(prev) || h != get_counterpart(prev));
231  RFC_assertion( ++count<100);
232  }
233  return prev;
234  }
235 
236  const Halfedge* get_next( const Halfedge* h) const {
237  const Halfedge *next = h->next();
238  if ( !is_border( h)) return next;
239 
240  RFC_assertion_code( int count=0);
241  while ( !is_border(next)) {
242  RFC_assertion( next->is_border());
243  next = get_counterpart(next)->opposite()->next();
244  RFC_assertion( is_border(next) || h != get_counterpart(next));
245  RFC_assertion( ++count<100);
246  }
247  return next;
248  }
249 
250  const Facet* get_facet( const Halfedge* h) const {
251  // returns the incident facet of h.
252  return h->facet();
253  }
254 
255  const Halfedge* get_halfedge( const Facet* f) const {
256  // returns the incident halfedge of f.
257  // Note that the halfedge is necessarily a primary copy.
258  return f->halfedge();
259  }
260 
261  const HDS_overlay *get_hds( const Vertex *v) const { return v->pane()->hds(); }
262  const HDS_overlay *get_hds( const Halfedge *h) const { return get_hds(h->vertex()); }
263 
264  const RFC_Pane_overlay *get_pane(const Vertex *v) const
265  { return v->pane();}
266  const RFC_Pane_overlay *get_pane(const Halfedge *h) const
267  { return get_pane(h->vertex());}
268 
269  const Halfedge* get_prev_around_origin( const Halfedge* h) const {
270  // returns the previous halfedge around h->origin().
271  return get_opposite( get_prev( h));
272  }
273 
274  const Halfedge* get_next_around_origin( const Halfedge* h) const {
275  // returns the next halfedge around h->origin().
276  return get_next( get_opposite( h));
277  }
278 
280  // returns the previous halfedge around h->destination().
281  return get_prev( get_opposite( h));
282  }
283 
285  // returns the next halfedge around h->destination().
286  return get_opposite( get_next(h));
287  }
288 
289  const Vector_3 &get_normal( const Halfedge *h) const
290  { return get_pane(h)->get_normal(h, h->destination()); }
291 
292  const Vector_3 &get_normal( const Halfedge *h, const Vertex *v) const
293  { return get_pane(h)->get_normal(h, v); }
294 
295  void mark( Halfedge* h) const
296  { get_pane(h)->mark( h); }
297  void unmark( Halfedge* h) const
298  { get_pane(h)->unmark( h); }
299  bool marked( const Halfedge* h) const
300  { return get_pane(h)->marked( h); }
301 
302 // Implementing These Functions.
303 // ====================================================
304 // Access Functions
305 // ----------------------------------
306 
307  Halfedge* get_halfedge( Vertex* v,Tag_false) const { return v->halfedge(); }
309  Halfedge *h = v->halfedge();
310  return h->is_border() ? get_counterpart( h) : h;
311  }
312 
313  Vertex* get_vertex( Halfedge* h, Tag_false) const { return h->vertex(); }
315  { return get_primary( h->vertex()); }
316 
318  { return h->opposite(); }
320  Halfedge *h = i->opposite();
321  return h->is_border() ? get_counterpart( h) : h;
322  }
323 
324  Vertex* get_primary( Vertex *v, Tag_false) const { return v; }
326  { return get_pane(v)->get_primary(v); }
327 
328 // Const Access Functions
329 // ----------------------------------
330 
331  const Halfedge* get_halfedge( const Vertex* v, Tag_false) const
332  { return v->halfedge(); }
333  const Halfedge* get_halfedge( const Vertex* v, Tag_true) const {
334  const Halfedge *h = v->halfedge();
335  return h->is_border() ? get_counterpart( h) : h;
336  }
337 
338  const Vertex* get_vertex( const Halfedge* h, Tag_false) const
339  { return h->vertex(); }
340  const Vertex* get_vertex( const Halfedge* h, Tag_true) const
341  { return get_primary( h->vertex()); }
342 
343  const Halfedge* get_opposite( const Halfedge* h, Tag_false) const
344  { return h->opposite(); }
345  const Halfedge* get_opposite( const Halfedge* i, Tag_true) const {
346  const Halfedge *h = i->opposite();
347  return h->is_border() ? get_counterpart( h) : h;
348  }
349 
350  const Vertex* get_primary( const Vertex *v, Tag_false) const
351  { return v; }
352  const Vertex* get_primary( const Vertex *v, Tag_true) const
353  { return v?get_pane(v)->get_primary(v):v; }
354 
355  void set_parent( INode *i, Halfedge *h, const Point_2 &p, int color) {
356  Real x=p[0]; RFC_assertion( x>=0. && x<=1.);
357 
358  if ( x == 1) { h=get_opposite(h); x = 0; }
359  if ( is_border( h)) {
360  if (x==0) h = h->opposite()->next();
361  else { h = h->opposite(); x=1.-x; }
362  RFC_assertion( !h->is_border());
363  }
364  if ( x!=p[0])
365  i->set_parent( h, Point_2(x,p[1]), color);
366  else
367  i->set_parent( h, p, color);
368  }
369 
371  { RFC_assertion( is_primary( v)); return get_pane( v)->get_inode( v); }
372  const INode *get_inode( const Vertex *v) const
373  { RFC_assertion( is_primary( v)); return get_pane( v)->get_inode( v); }
374  void set_inode( Vertex *v, INode *i) const
375  { RFC_assertion( is_primary( v)); get_pane(v)->set_inode(v,i); }
376 
378  { return get_pane(h)->get_inode_list(h); }
379 
380  const INode_list &get_inode_list( const Halfedge *h) const
381  { return get_pane(h)->get_inode_list(h); }
382 
383  INode *get_buffered_inode( Halfedge *h, int tag) const {
384  return get_pane(h)->get_buffered_inode( h, tag);
385  }
386  void set_buffered_inode( Halfedge *h, int tag, INode *i) const {
387  get_pane(h)->set_buffered_inode( h, tag, i);
388  }
389 protected:
391  { return get_pane(h)->get_counterpart( h); }
392  const Halfedge *get_counterpart( const Halfedge *h) const
393  { return get_pane(h)->get_counterpart( h); }
394 };
395 
397 
398 #endif // RFC_CHDS_DECORATOR_H //
399 // EOF //
400 
401 
402 
403 
404 
405 
Halfedge * get_halfedge(Facet *f) const
Definition: HDS_accessor.h:116
bool is_border(const Vertex *v) const
Definition: HDS_accessor.h:160
Vertex * get_origin(Halfedge *h) const
Definition: HDS_accessor.h:87
bool is_border(const Halfedge *h, Tag_true) const
Definition: HDS_accessor.h:157
Halfedge * get_next(Halfedge *h) const
Definition: HDS_accessor.h:108
Vertex * get_primary(Vertex *v, Tag_true) const
Definition: HDS_accessor.h:325
Vector_3 Vector
Definition: HDS_accessor.h:60
const RFC_Pane_overlay * get_pane(const Halfedge *h) const
Definition: HDS_accessor.h:266
const Halfedge * get_halfedge(const Facet *f) const
Definition: HDS_accessor.h:255
Halfedge * get_opposite(Halfedge *h, Tag_false) const
Definition: HDS_accessor.h:317
bool is_border(const Vertex *v, Tag_false) const
Definition: HDS_accessor.h:163
const Halfedge * get_prev_around_destination(const Halfedge *h) const
Definition: HDS_accessor.h:279
Halfedge * get_prev(Halfedge *h) const
Definition: HDS_accessor.h:105
Halfedge_overlay * halfedge()
Definition: HDS_overlay.h:73
INode * get_buffered_inode(Halfedge *h, int tag) const
Definition: HDS_accessor.h:383
Halfedge * get_halfedge(Vertex *v, Tag_false) const
Definition: HDS_accessor.h:307
bool is_primary(const Vertex *v) const
Definition: HDS_accessor.h:187
RFC_Pane_overlay * pane()
Definition: HDS_overlay.h:69
const Vertex * get_primary(const Vertex *v, Tag_true) const
Definition: HDS_accessor.h:352
const Halfedge * get_prev(const Halfedge *h) const
Definition: HDS_accessor.h:222
const Vertex * get_origin(const Halfedge *h) const
Definition: HDS_accessor.h:204
Vertex_overlay Vertex
Definition: HDS_accessor.h:54
Halfedge * get_opposite(Halfedge *h) const
Definition: HDS_accessor.h:99
RFC_Pane_overlay * get_pane(Halfedge *h) const
Definition: HDS_accessor.h:129
const Vertex * get_vertex(const Halfedge *h, Tag_true) const
Definition: HDS_accessor.h:340
const Halfedge * get_next(const Halfedge *h) const
Definition: HDS_accessor.h:236
Vertex_overlay * destination()
Definition: HDS_overlay.h:137
RFC_Pane_overlay * get_pane(Vertex *v) const
Definition: HDS_accessor.h:128
const Vertex * get_primary(const Vertex *v) const
const RFC_Pane_overlay * get_pane(const Vertex *v) const
Definition: HDS_accessor.h:264
Halfedge_overlay * opposite()
Definition: HDS_overlay.h:118
Vertex * get_primary(Vertex *v, Tag_false) const
Definition: HDS_accessor.h:324
HDS_overlay * get_hds(Halfedge *h) const
Definition: HDS_accessor.h:126
bool is_feature_1(const Halfedge *h) const
Definition: HDS_accessor.h:184
Halfedge_overlay Halfedge
Definition: HDS_accessor.h:55
const Vector_3 & get_normal(const Halfedge *h) const
Definition: HDS_accessor.h:289
bool marked(const Halfedge *h) const
Definition: HDS_accessor.h:299
double Real
Definition: mapbasic.h:322
const Halfedge * get_prev_around_origin(const Halfedge *h) const
Definition: HDS_accessor.h:269
Halfedge_overlay * halfedge()
Definition: HDS_overlay.h:163
const Vertex * get_primary(const Vertex *v) const
Definition: HDS_accessor.h:189
bool is_border(const Halfedge *h, Tag_false) const
Definition: HDS_accessor.h:155
Halfedge * get_opposite(Halfedge *i, Tag_true) const
Definition: HDS_accessor.h:319
bool is_border() const
Definition: HDS_overlay.h:131
INode * get_inode(Vertex *v) const
Definition: HDS_accessor.h:370
const INode * get_inode(const Vertex *v) const
Definition: HDS_accessor.h:372
const Halfedge * get_opposite(const Halfedge *h, Tag_false) const
Definition: HDS_accessor.h:343
void unmark(Halfedge *h) const
Definition: HDS_accessor.h:297
const Halfedge * get_next_around_origin(const Halfedge *h) const
Definition: HDS_accessor.h:274
const Facet * get_facet(const Halfedge *h) const
Definition: HDS_accessor.h:250
Halfedge * get_halfedge(Vertex *v) const
Definition: HDS_accessor.h:75
bool is_feature_0(const Vertex *v) const
Definition: HDS_accessor.h:179
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to and or **sell copies of the and to permit persons to whom the **Software is furnished to do subject to the following this list of conditions and the following disclaimers ****Redistributions in binary form must reproduce the above **copyright this list of conditions and the following **disclaimers in the documentation and or other materials **provided with the distribution ****Neither the names of the Center for Simulation of Advanced the University of nor the names of its **contributors may be used to endorse or promote products derived **from this Software without specific prior written permission ****THE SOFTWARE IS PROVIDED AS WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE v
Definition: roccomf90.h:20
bool is_on_feature(const Vertex *v) const
Definition: HDS_accessor.h:174
#define RFC_END_NAME_SPACE
Definition: rfc_basic.h:29
Halfedge * get_counterpart(Halfedge *h) const
Definition: HDS_accessor.h:390
HDS_overlay * get_hds(Vertex *v) const
Definition: HDS_accessor.h:125
const Halfedge * get_halfedge(const Vertex *v, Tag_true) const
Definition: HDS_accessor.h:333
void set_buffered_inode(Halfedge *h, int tag, INode *i) const
Definition: HDS_accessor.h:386
Vertex * get_vertex(Halfedge *h, Tag_true) const
Definition: HDS_accessor.h:314
Halfedge_overlay * prev()
Definition: HDS_overlay.h:123
INode * get_buffered_inode(Halfedge *h, int tag) const
Vertex_overlay * vertex()
Definition: HDS_overlay.h:106
const INode_list & get_inode_list(const Halfedge *h) const
Definition: HDS_accessor.h:380
const Halfedge * get_next_around_destination(const Halfedge *h) const
Definition: HDS_accessor.h:284
const Vertex * get_vertex(const Halfedge *h, Tag_false) const
Definition: HDS_accessor.h:338
bool is_feature_0(const Vertex *v) const
Facet * get_facet(Halfedge *h) const
Definition: HDS_accessor.h:111
Halfedge * get_halfedge(Vertex *v, Tag_true) const
Definition: HDS_accessor.h:308
const Halfedge * get_counterpart(const Halfedge *h) const
Halfedge * get_prev_around_origin(Halfedge *h) const
Definition: HDS_accessor.h:131
bool is_primary(const Vertex *v) const
HDS_overlay HDS
Definition: HDS_accessor.h:53
blockLoc i
Definition: read.cpp:79
const Halfedge * get_counterpart(const Halfedge *h) const
Definition: HDS_accessor.h:392
#define RFC_BEGIN_NAME_SPACE
Definition: rfc_basic.h:28
Vertex * get_vertex(Halfedge *h) const
Definition: HDS_accessor.h:81
void int int REAL * x
Definition: read.cpp:74
INode_list & get_inode_list(Halfedge *h)
const Vertex * get_primary(const Vertex *v, Tag_false) const
Definition: HDS_accessor.h:350
const Vertex * get_vertex(const Halfedge *h) const
Definition: HDS_accessor.h:198
INode_list & get_inode_list(Halfedge *h) const
Definition: HDS_accessor.h:377
const Halfedge * get_halfedge(const Vertex *v, Tag_false) const
Definition: HDS_accessor.h:331
_MP Supports_multiple_panes
Definition: HDS_accessor.h:65
const Halfedge * get_halfedge(const Vertex *v) const
Definition: HDS_accessor.h:192
const HDS_overlay * get_hds(const Halfedge *h) const
Definition: HDS_accessor.h:262
void set_parent(INode *i, Halfedge *h, const Point_2 &p, int color)
Definition: HDS_accessor.h:355
const HDS_overlay * get_hds(const Vertex *v) const
Definition: HDS_accessor.h:261
Halfedge_overlay * next()
Definition: HDS_overlay.h:120
void set_buffered_inode(Halfedge *h, int tag, INode *inode)
bool is_border(const Vertex *v, Tag_true) const
Definition: HDS_accessor.h:165
void set_inode(Vertex *v, INode *i)
#define RFC_assertion_code
Definition: rfc_basic.h:68
Vertex * get_primary(Vertex *v) const
Definition: HDS_accessor.h:122
Halfedge * get_next_around_origin(Halfedge *h) const
Definition: HDS_accessor.h:136
Vertex * get_vertex(Halfedge *h, Tag_false) const
Definition: HDS_accessor.h:313
void mark(Halfedge *h) const
Definition: HDS_accessor.h:295
const Vertex * get_destination(const Halfedge *h) const
Definition: HDS_accessor.h:210
const Vector_3 & get_normal(const Halfedge *h, const Vertex *v) const
Definition: HDS_accessor.h:292
void unmark(Halfedge *h)
Halfedge * get_next_around_destination(Halfedge *h) const
Definition: HDS_accessor.h:146
Vertex * get_destination(Halfedge *h) const
Definition: HDS_accessor.h:93
Some basic geometric data types.
Definition: mapbasic.h:54
Halfedge * get_prev_around_destination(Halfedge *h) const
Definition: HDS_accessor.h:141
const Halfedge * get_opposite(const Halfedge *h) const
Definition: HDS_accessor.h:216
bool is_on_feature(const Vertex *v) const
bool is_border(const Halfedge *h) const
Definition: HDS_accessor.h:153
void set_inode(Vertex *v, INode *i) const
Definition: HDS_accessor.h:374
bool is_feature_1(const Halfedge *h) const
INode * get_inode(const Vertex *v) const
void set_parent(Halfedge *h, const Point_2 &p, int color)
Definition: HDS_overlay.h:337
Vector_3 & get_normal(int v)
#define RFC_assertion
Definition: rfc_basic.h:65
bool marked(const Halfedge *h) const
bool is_physical_border(const Halfedge *h) const
Determine whether an edge is on the physical boundary of the window.
Facet_overlay Facet
Definition: HDS_accessor.h:56
const Halfedge * get_opposite(const Halfedge *i, Tag_true) const
Definition: HDS_accessor.h:345
void mark(Halfedge *h)
Facet_overlay * facet()
Definition: HDS_overlay.h:129
SURF::Vector_2< Real > Point_2
Definition: rfc_basic.h:43
HDS::Point Point
Definition: HDS_accessor.h:59