25 #include "message-macros.hh"
31 using namespace GMap3d;
35 CBooleanOperations3d::CBooleanOperations3d(CGMapVertex * AMap,
38 bool ACalculateOrientation,
41 ACalculateOrientation, AVertexDI),
62 int nb = c.
corefine(d1, d2, ACopyMarks);
72 #define a0(d) (getMap()->alpha0(d))
73 #define a1(d) (getMap()->alpha1(d))
74 #define a2(d) (getMap()->alpha2(d))
75 #define a3(d) (getMap()->alpha3(d))
84 list<CDart*> dart_list[2];
89 for (
int i = 0; i < 2; i++)
90 if (
getMap()->isMarked(*dcc, mark[i]) &&
91 !
getMap()->isMarked(
a2(*dcc), mark[i]))
92 dart_list[i].push_back(
a2(*dcc));
95 for (
int i = 0; i < 2; i++)
96 while (!dart_list[i].empty()) {
97 d = dart_list[i].front(), dart_list[i].pop_front();
99 if (!
getMap()->isMarked(d, mark[i])) {
100 getMap()->setMark(d, mark[i]);
102 if (!
getMap()->isMarked(
a0(d), mark[i]))
103 dart_list[i].push_back(
a0(d));
105 if (!
getMap()->isMarked(
a1(d), mark[i]))
106 dart_list[i].push_back(
a1(d));
108 if (!
getMap()->isMarked(
a2(d), mark[i]))
109 dart_list[i].push_back(
a2(d));
111 if ((!
getMap()->isMarked(d, mark[(i + 1) % 2]) ||
112 getMap()->isMarked(
a3(d), mark[(i + 1) % 2])) &&
113 !
getMap()->isMarked(
a3(d), mark[i]))
114 dart_list[i].push_back(
a3(d));