Jürg Lehni
|
892154e8f8
|
Never starting in intersections allows for further code simplifications.
|
2015-10-09 00:03:34 +02:00 |
|
Jürg Lehni
|
9590578339
|
Avoid all intersections as starting points for boolean paths.
|
2015-10-08 23:56:18 +02:00 |
|
Jürg Lehni
|
939a9fe034
|
Improve overlap handling by actually storing overlap curves on intersections objects.
And properly comparing against them in tracePaths().
|
2015-10-08 23:54:00 +02:00 |
|
Jürg Lehni
|
5129fb0050
|
Do not start with segments with multiple intersections.
Simplifies the required checks at the end, and generally reduces number edge cases.
|
2015-10-08 23:38:41 +02:00 |
|
Jürg Lehni
|
c9eba83cc7
|
Improve detection of start segments.
Segments with multiple intersections need to be checked thoroughly to avoid errors.
|
2015-10-08 23:13:37 +02:00 |
|
Jürg Lehni
|
5c70f47b6f
|
Fix colors in reportWindings code.
|
2015-10-07 23:37:09 +02:00 |
|
Jürg Lehni
|
15d797ac55
|
Improve linkIntersections() to prevent endless recursions in linked intersections.
|
2015-10-07 17:20:08 +02:00 |
|
Jürg Lehni
|
3e9d7593cf
|
Some smaller tweaks in tracePaths()
|
2015-10-07 10:58:29 +02:00 |
|
Jürg Lehni
|
4fac3ee6fc
|
Rename getIntersection() -> getBestIntersection()
|
2015-10-07 10:57:43 +02:00 |
|
Jürg Lehni
|
bfa0459c52
|
Go back to using Group for divide() results.
As they may contain multiple CompoundPaths.
|
2015-10-07 10:57:09 +02:00 |
|
Jürg Lehni
|
1103c7036f
|
Remove unnecessary isValid() check on segments without intersections.
It was only causing issues without solving anything.
|
2015-10-07 02:02:27 +02:00 |
|
Jürg Lehni
|
8c56a1a110
|
Include _visited checks in isValid() calls.
This magically reduces the remaining glitches in @iconexperience's test-suite to half.
Relates to #784.
|
2015-10-06 22:23:43 +02:00 |
|
Jürg Lehni
|
896b068266
|
Switch from recursion to a simple loop in getIntersection()
|
2015-10-06 21:30:51 +02:00 |
|
Jürg Lehni
|
8e4bef217a
|
Change Curve.getParameterOf() to accept a point instead of x, y arguments.
|
2015-10-06 21:24:58 +02:00 |
|
Jürg Lehni
|
3ac3df8d32
|
Rewrite method for linking and choosing multiple intersections in the same location.
The special handling of overlaps reduces the amount of remaining glitches substantially.
Relates to #784.
|
2015-10-06 21:09:35 +02:00 |
|
Jürg Lehni
|
fcdf916863
|
Some tweaks to debugging code.
Leave open path artifacts clearly visible for now, so they can be more easily detected.
|
2015-10-05 17:42:01 +02:00 |
|
Jürg Lehni
|
93cacffd06
|
Improve comments describing isValid() calls.
|
2015-10-05 10:56:29 +02:00 |
|
Jürg Lehni
|
7494f880f8
|
Revert previous commit, due to wrong assumption.
|
2015-10-05 10:44:34 +02:00 |
|
Jürg Lehni
|
90b4cf7292
|
No need to check for overlap when determining value for unadjusted
Since setting only changes behavior if there actually is an overlap.
|
2015-10-05 05:52:35 +02:00 |
|
Jürg Lehni
|
05bc6afdbb
|
Always give intersection segment priority over current segment if valid.
Fixes example 22 in #784, doesn't seem to introduce new issues, unlike last time I tried this approach.
|
2015-10-05 05:34:22 +02:00 |
|
Jürg Lehni
|
bd4874d73e
|
Improve debug logging of windings.
|
2015-10-05 04:57:12 +02:00 |
|
Jürg Lehni
|
ba76ed8671
|
Consider the winding contribution at the intersection of the next segment as well.
Fixes both example 20 and example 21 in #784
|
2015-10-05 04:24:04 +02:00 |
|
Jürg Lehni
|
035a3a1b8c
|
Remove unnecessary _visited check.
|
2015-10-04 02:27:56 +02:00 |
|
Jürg Lehni
|
ebc956353f
|
Move code to adjust segments after split to CurveLocation.
|
2015-10-04 02:25:33 +02:00 |
|
Jürg Lehni
|
8073183010
|
Use getIntersections() with right filter instead of getCrossings() for boolean operations.
|
2015-10-03 17:17:12 -04:00 |
|
Jürg Lehni
|
5af8515d1a
|
Commit some useful debug code, deactivated for now.
|
2015-10-03 16:18:00 -04:00 |
|
Jürg Lehni
|
61fc75ace3
|
Some code clean-up.
|
2015-10-03 10:40:33 -05:00 |
|
Jürg Lehni
|
7496a7c9e2
|
Try linked up intersections first before switching to the other intersecetion.
|
2015-10-02 19:00:32 -05:00 |
|
Jürg Lehni
|
632eb25f19
|
Bring back code removed in 11611c8fe2 again.
But add a _visited check, to get best of both approaches.
|
2015-10-02 18:57:45 -05:00 |
|
Jürg Lehni
|
11611c8fe2
|
Remove isValid() check for current segment before attempting the switch.
This properly fixes example 14 in #784.
|
2015-10-02 01:06:36 -05:00 |
|
Jürg Lehni
|
8dfa721e5a
|
Adjust debug rendering.
|
2015-10-01 21:12:15 -05:00 |
|
Jürg Lehni
|
a808aaf0fa
|
Remove unnecessary check for other === start.
|
2015-10-01 21:11:51 -05:00 |
|
Jürg Lehni
|
de57a7fbc8
|
Simplify tracePaths() code.
|
2015-10-01 21:09:30 -05:00 |
|
Jürg Lehni
|
8aca088bf6
|
Clean-up splitPath() code a bit.
|
2015-10-01 09:41:57 -05:00 |
|
Jürg Lehni
|
b8c6eb46ad
|
Fix weirdness of Curve#divide() modifying the wrong Curve object.
|
2015-10-01 06:52:08 -05:00 |
|
Jürg Lehni
|
c77165be3a
|
Fix issue in Curve#divide() that lead to intersection segments being linked up wrongly.
Relates to #784
|
2015-10-01 06:21:17 -05:00 |
|
Jürg Lehni
|
53dd726057
|
Rename ignoreStraight argument to _setHandles
|
2015-10-01 05:55:22 -05:00 |
|
Jürg Lehni
|
fd927cbe22
|
Properly solve issues with self-intersecting special case.
(e.g. shapes resembling the infinity sign)
|
2015-09-24 12:49:39 -04:00 |
|
Jürg Lehni
|
fc0b5a8858
|
Give the intersection that brings us back to the beginning alwasy the priority.
|
2015-09-24 07:47:39 -04:00 |
|
Jürg Lehni
|
c79166a46f
|
Mark last segment as visited when done.
|
2015-09-23 14:31:12 -04:00 |
|
Jürg Lehni
|
6a29f200e3
|
Always use getIntersection(), even on the first segment.
Now that it works well.
|
2015-09-21 12:44:53 -04:00 |
|
Jürg Lehni
|
51c34444db
|
Some more debugging code clean-up.
|
2015-09-21 12:18:57 -04:00 |
|
Jürg Lehni
|
0f61ce896a
|
Some code clean-up.
|
2015-09-21 10:54:33 -04:00 |
|
Jürg Lehni
|
f6f42fe09b
|
Improve handling of overlap ambiguity in getIntersection()
Two passes are needed, first strict, then non-strict, to prevent 'better' next candiates over 'worse' ones.
|
2015-09-21 09:44:17 -04:00 |
|
Jürg Lehni
|
19a17b2918
|
Prevent infinite loops through circular references of multiple intersections.
|
2015-09-21 09:43:19 -04:00 |
|
Jürg Lehni
|
40570b3e59
|
Furher improve boolean debug logging and drawing.
|
2015-09-21 09:42:47 -04:00 |
|
Jürg Lehni
|
b68be09c87
|
Fix all accidental non-breaking spaces.
|
2015-09-20 22:39:28 +02:00 |
|
Jürg Lehni
|
530b8b7bc8
|
Handle adjusted overlap winding contribution and operator calls through new isValid() function.
|
2015-09-20 15:50:26 +02:00 |
|
Jürg Lehni
|
738cc4c214
|
Yet another improvement in multiple interseections boolean code.
This appears to be the one. The only remaining failing cases seem to be linked to getting the same intersection twice now!
Relates to #787
|
2015-09-20 15:29:54 +02:00 |
|
Jürg Lehni
|
946157f1b1
|
Add note about usage of _originalWinding.
|
2015-09-20 14:19:14 +02:00 |
|