26 using namespace GMap3d;
32 assert(ADim>=0 && ADim<=2);
47 (AMarkToExtrude>=0 &&
isMarked(
alpha1 (ADart), AMarkToExtrude))) &&
66 assert(ADim>=0 && ADim<=2);
75 for (
int dim=0; dim<=2; ++dim)
86 bool AExtrusionWithAdjacentSews,
87 int AMarkExtruded,
int ADirectInfoIndex)
90 assert(ADim>=0 && ADim<=2);
93 CDart* initial = ADart;
109 for (; it.
cont(); ++it)
125 for (; it.
cont(); ++it)
141 for (; it.
cont(); ++it)
156 halfCell =
alpha(ADart, ADim+1);
169 for (; it.
cont(); ++it)
176 opposite =
alpha0(halfCell);
193 if (it.prevOperationType()!=
OP_NONE)
236 if (AExtrusionWithAdjacentSews && ADim>0 && AMarkExtruded>=0)
241 for (; cov->
cont(); ++(*cov))
243 CDart* first = **cov;
244 CDart* semiFirst = initial==halfCell ? first :
alpha(first, ADim+1);
254 bool finished = first==second;
256 while (!finished && !
isMarked(second, AMarkExtruded))
258 if (
isFree(second, ADim+1))
262 second =
alpha(second, ADim+1);
266 ?
alpha(second, ADim)
280 initial==halfCell ? second :
alpha(second, ADim+1);
282 assert(!
isFree(semiSecond, ADim));
283 sew(
alpha(semiFirst, ADim),
alpha(semiSecond, ADim), ADim+1);
298 bool AExtrusionWithAdjacentSews,
300 int ,
int AMarkExtruded)
302 return topoExtrude(ADart, ADim, AExtrusionWithAdjacentSews, AMarkExtruded);
306 bool AExtrusionWithAdjacentSews,
314 AExtrusionWithAdjacentSews,
325 bool AExtrusionWithAdjacentSews,
336 AExtrusionWithAdjacentSews,
339 AExtrusionWithAdjacentSews,
342 AExtrusionWithAdjacentSews,
365 bool AExtrusionWithAdjacentSews,
376 (AMarkTreated<0 || !
isMarked(*it, AMarkTreated)))
383 bool free =
isFree(*it, ADim+1);
386 AExtrusionWithAdjacentSews,
388 AMarkNumber, extruded);
391 if (free && !
isFree(*it, ADim+1))
427 assert(1<=ADim && ADim<=2);
437 return isFree(ADart, ADim+1);
441 bool AExtrusionWithAdjacentSews,
442 int AMarkExtruded,
int ADirectInfoIndex)
446 CDart* current = ADart;
455 for (; cov->
cont(); ++(*cov))
475 current =
topoExtrude(current, ADim, AExtrusionWithAdjacentSews,
477 current==ADart ? ADirectInfoIndex : -1);
480 ++path;
if (!path.
cont())
break;
483 { ++path;
if (!path.
cont())
break; }
496 topoSew(current, ADart, ADim+1);
503 bool AExtrusionWithAdjacentSews)
506 assert(1<=ADim && ADim<=2);
517 for (; it.
cont(); ++it)
530 extruded, directInfoIndex);
552 assert(1<=ADim && ADim<=2);
559 return isFree(ADart, ADim+1);
584 bool AClosed,
int ANbEdges,
585 bool AExtrusionWithAdjacentSews,
587 int ADirectInfoIndex )
597 AExtrusionWithAdjacentSews,
598 AMarkExtruded, ADirectInfoIndex);
607 bool AClosed,
int ANbEdges,
608 bool AExtrusionWithAdjacentSews)
610 assert(1<=ADim && ADim<=2);
618 AExtrusionWithAdjacentSews);