Commit Graph

291 Commits

Author SHA1 Message Date
Mael Rouxel-Labbé 7385ebb806 Refresh priority queues before calling top() if simultaneous events are present 2020-11-09 18:22:33 +01:00
Mael Rouxel-Labbé 9c8aeb0242 Fix strict ordering's asymmetry condition not being satisfied in Split Event PQ 2020-11-06 17:27:43 +01:00
Mael Rouxel-Labbé d609a9607e Fix Split Queue Comparer in edge case of two invalid pseudo-splits 2020-11-06 17:26:59 +01:00
Jane Tournois 29b6963b98 add missing include and namespace 2020-11-06 12:28:30 +01:00
Sébastien Loriot 314db57a38 disable polygon assertion
allow strictly simple polygons and epick construction issues
2020-11-06 12:03:15 +01:00
Sébastien Loriot e1dd96414d use non-protected interval type and use protector
guarantee that the same rounding mode will be used when approximating
the exact value to interval
2020-11-06 10:43:08 +01:00
Sébastien Loriot dd49cb6035 remove unused variable 2020-11-06 10:10:11 +01:00
Sébastien Loriot 3d6e976770 add extra checks to make sure we do not use intervals with the wrong rounding mode 2020-11-03 11:40:24 +01:00
Sébastien Loriot 1d2af01102 add missing protector 2020-11-03 11:09:15 +01:00
Sébastien Loriot d493dfce88 exclude speed harmonization at compile time 2020-11-03 11:09:15 +01:00
Mael Rouxel-Labbé 7fccb08191 Fix disabling harmonization for everything instead of just EPECK_w_SQRT 2020-11-02 18:47:41 +01:00
Sébastien Loriot 6221751bf1 fix warning 2020-11-02 15:27:39 +01:00
Mael Rouxel-Labbé 05e4c44216 Misc minor fixes 2020-10-16 14:38:11 +02:00
Mael c5326a4832
Commit fixes from @sloriot's review
Co-authored-by: Sebastien Loriot <sebastien.loriot@cgal.org>
2020-10-13 09:56:32 +02:00
Mael Rouxel-Labbé 3b57f6c4f5 Add missing header include 2020-10-12 11:01:10 +02:00
Mael Rouxel-Labbé 145f204517 Misc minor fixes 2020-10-09 18:36:53 +02:00
Mael Rouxel-Labbé 6601a5ec93 Extract CGAL::Trisegment_2 from _aux.h (needs to be documented for concepts) 2020-10-09 14:35:29 +02:00
Mael Rouxel-Labbé 9051fc1d23 Overhaul & enhance SLS's free functions to provide & complete the advertised API 2020-10-08 22:54:11 +02:00
Mael Rouxel-Labbé e9c3531145 Fix missing namespace 2020-10-08 22:36:36 +02:00
Mael Rouxel-Labbé 7309da88c1 Misc minor fixes 2020-10-07 19:36:32 +02:00
Mael Rouxel-Labbé 14644c4ae6 Fix false positive assertions in offset construction:
If the constructions are not exact, you might get a degenerate polygon
even if predicate-wise it is not a degenerate polygon (Hook inside).
Let's ignore degenerate polygons in that case.
2020-10-07 19:33:36 +02:00
Mael Rouxel-Labbé 13f19c4ff1 Template Trisegment_2 with the inner Segment type
Needed because it is now documented
2020-10-07 19:28:54 +02:00
Mael Rouxel-Labbé 6bba0da37f Various minor fixes 2020-10-06 17:54:24 +02:00
Mael Rouxel-Labbé 75137526b6 Misc tiny fixes 2020-10-05 18:35:08 +02:00
Mael Rouxel-Labbé b6333ed459 Harmonize speeds of collinear input segments + caching for non-filtered kernels 2020-10-05 18:29:34 +02:00
Mael Rouxel-Labbé 2930624d7f Prevent tangleness in multisplits using certified angle-based local queue sorts
The goal is to prevent multi splits that can cross each other without noticing.
such as a square with four square holes, and two diagonal splits
in the middle.

Local split queues are sorted to give  priority to the smallest angle among possible split
events, we forbid diagonal splits and thus a later split cannot have
a triedge with two different subparts of the polygon.

The exact criterion for sorting is the angle within a triedge,
between the bisector and the supporting line of e2 (possibly swapped
in case of pseudo-splits, see code).
2020-09-29 20:02:06 +02:00
Mael Rouxel-Labbé 4d85f845e7 Enhance debug output 2020-09-29 20:00:55 +02:00
Mael Rouxel-Labbé e3679d1441 Print vertex and halfedge IDs in the basic drawers 2020-09-25 09:08:15 +02:00
Mael Rouxel-Labbé a7af1ab048 Add some more debug dumps 2020-09-25 09:07:52 +02:00
Mael Rouxel-Labbé 3b584d1167 Add a convenience function to get the other collinear edge 2020-09-25 09:06:57 +02:00
Mael Rouxel-Labbé 9c80bf709c Check for non-degenerate edges in the skeleton's validity functions 2020-09-25 09:06:10 +02:00
Mael Rouxel-Labbé 250b0628e8 Fix some bisectors sometimes being left marked as visited 2020-09-16 19:21:12 +02:00
Mael Rouxel-Labbé 7fb8cd8b80 Always exit faces ASAP when constructing offset to handle nm configurations 2020-09-16 19:19:49 +02:00
Mael Rouxel-Labbé 9e2085e030 Fix offset time conversions missing an intermediate conversion 2020-09-16 12:56:11 +02:00
Mael Rouxel-Labbé 2a10bdb3d6 Fix taking an extra prev() 2020-09-15 17:37:58 +02:00
Mael Rouxel-Labbé 9a90397c6c Another fix for offset construction in degenerate configurations 2020-09-14 17:57:18 +02:00
Mael Rouxel-Labbé f66d026cb3 Also draw points in basic drawing + add colors depending on vertex type 2020-09-11 20:08:45 +02:00
Mael Rouxel-Labbé 1fc41573e7 Fix a number of issues in the API of create_interior/exterior_skeleton
- Calls are broken with Polygon_with_holes and ranges
- is_simple() is not callable for anything else than Polygon_2
- Missing API for exterior
2020-09-11 20:07:37 +02:00
Mael Rouxel-Labbé c8006669f5 Use proper namespaces 2020-09-11 19:20:36 +02:00
Mael Rouxel-Labbé 655d4275f6 Add missing header includes in SS2 2020-09-11 15:00:27 +02:00
Mael Rouxel-Labbé dce8f123ea Enforce (strictly) positive offset times 2020-09-11 14:12:15 +02:00
Mael Rouxel-Labbé 88e4be548d Fix Straight_skeleton_2::is_valid tolerating fictitious vertices in complete SS 2020-09-11 14:01:10 +02:00
Mael Rouxel-Labbé efc333f34a Fix SLS offset functions (circular calls, doc/code inconsistencies, conversion)
WIP
2020-09-10 19:30:52 +02:00
Mael Rouxel-Labbé 8950cdef40 Fix conversion issues when computing the outer frame margin
Similar to d8d6935
2020-09-10 19:29:10 +02:00
Mael Rouxel-Labbé bcd7cd2cfc Draw skeleton's bisector edges in red (contour in black) 2020-09-10 15:44:45 +02:00
Mael Rouxel-Labbé e26fa8a1f7 Enhance debug dumps 2020-09-10 15:43:51 +02:00
Mael Rouxel-Labbé 85295a0072 Change debug verbose level 2020-09-07 19:03:20 +02:00
Mael Rouxel-Labbé d2cbbfed28 Fix offset construction issues when offset edges include skeleton bisectors
See comment in the code for an explanation.
2020-09-07 18:58:19 +02:00
Mael Rouxel-Labbé d8d6935559 Fix MaxTime conversion when FT is not convertible to K1::FT
Although the documentation does say that it is required
to be implicitely convertible. In practice, this wasn't
checked and failed silently: the FT in the template parameter
is not necessarily Input_kernel::FT, but could be e.g. double.
Then the call to Cartesian_converter meant that it actually used the overload:
bool operator()(bool) { ... }
if FT was not convertible to K1::FT (e.g. FT=double and
K1=EPECK_w/_SQRT). Thus this returned... 1.

This commit changes the requirement to be only constructible rather
than convertible, and explicitely creates a K1::FT.
2020-09-04 17:59:48 +02:00
Mael Rouxel-Labbé a0ed2280b8 Do not explore null nodes 2020-09-04 10:49:50 +02:00