File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -42,8 +42,27 @@ inline TArr::Halfedge_handle mergeWithPrev(TArr& dcel, typename TArr::Halfedge_h
42
42
43
43
template <class TArr >
44
44
inline TArr::Halfedge_handle mergeWithNext (TArr& dcel, typename TArr::Halfedge_handle edge) {
45
- return dcel.merge_edge (edge, edge->next (),
46
- Segment<Exact>(edge->source ()->point (), edge->next ()->target ()->point ()));
45
+ Segment<Exact> curve (edge->source ()->point (), edge->next ()->target ()->point ());
46
+ if (edge->direction () == edge->next ()->direction ()) {
47
+ return dcel.merge_edge (edge, edge->next (), curve);
48
+ } else {
49
+ auto fd1 = edge->face ()->data ();
50
+ auto fd2 = edge->twin ()->face ()->data ();
51
+ dcel.remove_edge (edge->next ());
52
+ dcel.remove_edge (edge);
53
+ auto he = CGAL::insert_non_intersecting_curve (dcel, curve);
54
+
55
+ typename TArr::Traits_2 traits;
56
+ auto equal = traits.equal_2_object ();
57
+ if (equal (curve.source (), he->source ()->point ())) {
58
+ he->face ()->data () = fd1;
59
+ he->twin ()->face ()->data () = fd2;
60
+ } else {
61
+ he->face ()->data () = fd2;
62
+ he->twin ()->face ()->data () = fd1;
63
+ }
64
+ return he;
65
+ }
47
66
}
48
67
49
68
template <class TArr >
You can’t perform that action at this time.
0 commit comments