100 real viewProscenium[4];
102 real prosceniumOrigin[2];
103 prosceniumOrigin[0] = (viewProscenium[1] - viewProscenium[0]) / 2.0;
104 prosceniumOrigin[1] = (viewProscenium[3] - viewProscenium[2]) / 2.0;
106 cout <<
"Proscenium culling:" << endl;
107 cout <<
"Proscenium: [" << viewProscenium[0] <<
", " << viewProscenium[1] <<
", "
108 << viewProscenium[2] <<
", " << viewProscenium[3] <<
"]" << endl;
109 cout <<
"Origin: [" << prosceniumOrigin[0] <<
", " << prosceniumOrigin[1] <<
"]" << endl;
122 ViewMap::viewedges_container::iterator ve, veend;
124 for (ve = viewMap.
ViewEdges().begin(), veend = viewMap.
ViewEdges().end(); ve != veend; ve++) {
134 bool bestOccluderTargetFound =
false;
135 FEdge *bestOccluderTarget =
nullptr;
136 real bestOccluderDistance = 0.0;
137 FEdge *festart = (*ve)->fedgeA();
149 if (!bestOccluderTargetFound) {
154 expandGridSpaceOccluderProscenium(fe);
156 bestOccluderTargetFound =
true;
157 bestOccluderTarget = fe;
162 if (bestOccluderTarget ==
nullptr || d < bestOccluderDistance) {
164 bestOccluderDistance = d;
165 bestOccluderTarget = fe;
176 }
while (fe !=
nullptr && fe != festart && !(bestOccluderTargetFound && (*ve)->isInImage()));
180 while (!
ELEM(fe,
nullptr, festart)) {
187 if ((*ve)->isInImage() && bestOccluderTarget !=
nullptr && !bestOccluderTargetFound) {
190 if (point[0] < occluderProscenium[0]) {
191 occluderProscenium[0] = point[0];
193 else if (point[0] > occluderProscenium[1]) {
194 occluderProscenium[1] = point[0];
196 if (point[1] < occluderProscenium[2]) {
197 occluderProscenium[2] = point[1];
199 else if (point[1] > occluderProscenium[3]) {
200 occluderProscenium[3] = point[1];
209 const real epsilon = 1.0e-6;
210 occluderProscenium[0] -= epsilon;
211 occluderProscenium[1] += epsilon;
212 occluderProscenium[2] -= epsilon;
213 occluderProscenium[3] += epsilon;
225 if (extensiveFEdgeSearch) {
227 for (ve = viewMap.
ViewEdges().begin(), veend = viewMap.
ViewEdges().end(); ve != veend; ve++) {
228 if (!(*ve)->isInImage()) {
232 FEdge *festart = (*ve)->fedgeA();
239 expandGridSpaceOccluderProscenium(fe);
242 }
while (!
ELEM(fe,
nullptr, festart));