Jürg Lehni
|
514e6651e6
|
Revert "Avoid all intersections as starting points for boolean paths."
This reverts commit 9590578339 .
|
2015-10-09 10:19:05 +02:00 |
|
Jürg Lehni
|
c45ae4b51a
|
Revert "Never starting in intersections allows for further code simplifications."
This reverts commit 892154e8f8 .
|
2015-10-09 10:18:45 +02:00 |
|
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 |
|