Skip to content

Commit c041796

Browse files
committed
helper updates correctly
1 parent 00b07de commit c041796

File tree

1 file changed

+29
-19
lines changed

1 file changed

+29
-19
lines changed

include/cg/triangulation/triangulation.h

+29-19
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,35 @@ namespace cg {
5858
};
5959
std::map<segment_2, point_2, decltype(segment_comp)> helper(segment_comp);
6060
for (auto c : p) {
61-
switch (vertex_type(c)) {
62-
case SPLIT:
63-
helper[segment_2(*c, *(c - 1))] = *c;
64-
break;
65-
case MERGE:
66-
helper.erase(segment_2(*(c + 1), *c));
67-
break;
68-
case LEFT_REGULAR:
69-
break;
70-
case RIGHT_REGULAR:
71-
helper.erase(segment_2(*(c + 1), *c));
72-
helper[segment_2(*c, *(c - 1))] = *c;
73-
break;
74-
case START:
75-
helper[segment_2(*c, *(c - 1))] = *c;
76-
break;
77-
case END:
78-
helper.erase(segment_2(*(c + 1), *c));
79-
break;
61+
v_type type = vertex_type(c);
62+
if (type == SPLIT) {
63+
segment_2 ej = helper.upper_bound(segment_2(*c, *c))->first;
64+
65+
helper[ej] = *c;
66+
helper[segment_2(*c, *(c + 1))] = *c;
67+
}
68+
if (type == MERGE) {
69+
70+
helper.erase(segment_2(*(c - 1), *c));
71+
segment_2 ej = helper.upper_bound(segment_2(*c, *c))->first;
72+
73+
helper[ej] = *c;
74+
}
75+
if (type == LEFT_REGULAR) {
76+
77+
helper.erase(segment_2(*(c - 1), *c));
78+
helper[segment_2(*c, *(c + 1))] = *c;
79+
}
80+
if (type == RIGHT_REGULAR) {
81+
segment_2 ej = helper.upper_bound(segment_2(*c, *c))->first;
82+
83+
helper[ej] = *c;
84+
}
85+
if (type == START) {
86+
helper[segment_2(*c, *(c + 1))] = *c;
87+
}
88+
if (type == END) {
89+
helper.erase(segment_2(*(c - 1), *c));
8090
}
8191
}
8292
return std::vector<triangle_2>(1);

0 commit comments

Comments
 (0)