Jürg Lehni
|
87687d816b
|
Implement PathItem#resolveCrossings() based on the new #getCrossings() method.
|
2015-09-18 17:51:03 +02:00 |
|
Jürg Lehni
|
c70f8cb3cc
|
Simplify overlap calculations by keeping the original winding value.
|
2015-09-18 17:46:46 +02:00 |
|
Jürg Lehni
|
59a23fdd3f
|
Improve debug logging.
|
2015-09-18 17:33:42 +02:00 |
|
Jürg Lehni
|
1508b8fc75
|
Improve debug logging.
|
2015-09-17 01:15:41 +02:00 |
|
Jürg Lehni
|
2750c34090
|
Improve the way intersections are sorted and merged.
Use a binary search to determine insertion index and compare with neighbours to eliminate doubles.
|
2015-09-17 01:03:13 +02:00 |
|
Jürg Lehni
|
30f1441c26
|
Various boolean code clean-ups.
|
2015-09-16 18:34:35 +02:00 |
|
Jürg Lehni
|
857e27e3a8
|
Fix accidental variable leackage.
|
2015-09-16 18:15:26 +02:00 |
|
Jürg Lehni
|
f8bd7a2005
|
Improve debug logging and drawing.
And add more descriptive comments to tracePath().
|
2015-09-16 09:52:41 +02:00 |
|
Jürg Lehni
|
2026e5571e
|
Some code cleanup and comments in isCrossing().
|
2015-09-16 02:54:25 +02:00 |
|
Jürg Lehni
|
ad276ba46a
|
More improvements in tracePaths()
- Use new isCrossing() check
- Correctly switch crossings in exclusion
|
2015-09-15 19:39:35 +02:00 |
|
Jürg Lehni
|
3ce7d88347
|
Second attempt at simplifying boolean code.
This time without endless loops.
|
2015-09-15 16:31:05 +02:00 |
|
Jürg Lehni
|
089738478c
|
Bring back boolean exclusion handling to reverted code.
|
2015-09-15 15:03:12 +02:00 |
|
Jürg Lehni
|
7b3f8598f4
|
Make sure all results of boolean operations are styled and inserted in the sample way.
|
2015-09-15 14:11:27 +02:00 |
|
Jürg Lehni
|
e4b4037721
|
Revert "Improve handling of exclude() operations."
This reverts commit e85586d0fe .
|
2015-09-15 13:01:52 +02:00 |
|
Jürg Lehni
|
5e327f7a48
|
Revert "Substantial simplifications in boolean code."
This reverts commit a665175a89 .
|
2015-09-14 15:23:46 +02:00 |
|
Jürg Lehni
|
fec479167c
|
Improve debug logging and drawing.
|
2015-09-14 15:16:52 +02:00 |
|
Jürg Lehni
|
a665175a89
|
Substantial simplifications in boolean code.
These were probably made possible thanks to increased precision elsewhere in the lib.
|
2015-09-14 01:20:03 +02:00 |
|
Jürg Lehni
|
e85586d0fe
|
Improve handling of exclude() operations.
Determine wether to switch to other intersection or not based on tangents.
Closes #781 again.
|
2015-09-14 00:51:46 +02:00 |
|
Jürg Lehni
|
b532c9cce2
|
Handle boolean exclusion as a special case.
Switching each time an intersection is encountered.
Closes #781
|
2015-09-13 22:12:04 +02:00 |
|
Jürg Lehni
|
e2d2c836e5
|
Some boolean code clean-up.
|
2015-09-13 14:19:56 +02:00 |
|
Jürg Lehni
|
d84a84c67f
|
Change the way winding contributions are propagated
The new approach preserves segment sequence.
Relates to #777
|
2015-09-13 13:06:01 +02:00 |
|
Jürg Lehni
|
d62caf6faa
|
Introduce CURVETIME_EPSILON, to be used when handling curve time parameters.
Relates to #777
|
2015-09-12 22:55:58 +02:00 |
|
Jürg Lehni
|
8047f90ccf
|
Switch to using GEOMETRIC_EPSILON in getWinding() code.
|
2015-09-12 22:20:31 +02:00 |
|
Jürg Lehni
|
ef45a5f62c
|
Clean up tMin / tMax uses.
|
2015-09-12 22:14:04 +02:00 |
|
Jürg Lehni
|
2fb203ddd1
|
Adjust notes since we now support boolean operations on self-intersecting Paths items
|
2015-09-12 11:58:17 +02:00 |
|
Jürg Lehni
|
cdd0cee623
|
Activate resolving of self-intersections in boolean code.
Relates to #779
|
2015-09-12 10:24:19 +02:00 |
|
Jürg Lehni
|
c69ea345da
|
Correctly handle self-intersections when deciding to switch segments.
Closes #765
|
2015-09-10 05:21:47 +02:00 |
|
Jürg Lehni
|
04452730dd
|
Simplify CurveLocation data structures.
Directly creating and linking intersections simplifies things a lot.
|
2015-09-09 17:17:49 +02:00 |
|
Jürg Lehni
|
78e0bae6aa
|
Activate code that handles self-intersection directly now.
Relates to #765, #761
|
2015-09-09 08:24:02 +02:00 |
|
Jürg Lehni
|
1c1e19614e
|
Avoid matching connected start- and end points when self-intersecting curves.
Partial fix for #765.
|
2015-09-09 07:28:08 +02:00 |
|
Jürg Lehni
|
9d12a0a82c
|
Rename Curve#isLinear() to #isStraight()
Relates to #652
|
2015-09-06 17:35:27 +02:00 |
|
Jürg Lehni
|
dd1f5ba3d1
|
Remove Path#isLinear() and use Path#getArea() instaed in boolean code.
|
2015-09-06 16:35:15 +02:00 |
|
Jürg Lehni
|
fa9eb8be99
|
Merge remote-tracking branch 'origin/develop' into boolean-fix
; Conflicts:
; src/path/PathItem.Boolean.js
|
2015-09-06 15:36:40 +02:00 |
|
Jürg Lehni
|
8b67d8a1dc
|
Remove #isStraight() in favor of #hasHandles() and implement #clearHandles()
Relates to #652
|
2015-09-06 12:47:35 +02:00 |
|
Jürg Lehni
|
0651eee0c2
|
No more need for special handling of 'subtract' overlaps.
This is now taken care of in the code that handles overlaps itself, and the additional code was causing additional issues.
|
2015-08-30 19:58:32 +02:00 |
|
Jürg Lehni
|
4379e0b0f0
|
Improve boolean debug code.
|
2015-08-30 19:56:17 +02:00 |
|
Jürg Lehni
|
31771aa01d
|
Insert results of boolean operations above whichever of the two paths appear further up in the stack.
|
2015-08-30 14:47:46 +02:00 |
|
Jürg Lehni
|
b4755ea699
|
Deactivate debug logging code.
|
2015-08-30 14:38:18 +02:00 |
|
Jürg Lehni
|
e07d8f55ea
|
Add debug logging for intersections again.
|
2015-08-28 16:18:14 +02:00 |
|
Jürg Lehni
|
4ccb53ac68
|
Remove note about overlapping paths not working.
: D
|
2015-08-26 18:03:22 +02:00 |
|
Jürg Lehni
|
3ad897c943
|
Remove all boolean debug code.
Keeping it on the boolean-fix branch for now.
|
2015-08-26 17:47:18 +02:00 |
|
Jürg Lehni
|
da0d01ee09
|
More work on main boolean code.
Start addressing self-intersecting paths, and remove resulting open paths for now.
|
2015-08-26 17:36:20 +02:00 |
|
Jürg Lehni
|
a099377ac6
|
Remove debug logging for CurveLocation.
|
2015-08-26 16:58:52 +02:00 |
|
Jürg Lehni
|
d85b4f0c80
|
Fix issues with wrong sorting of CurveLocation in Curve.filterIntersections()
|
2015-08-26 16:56:28 +02:00 |
|
Jürg Lehni
|
fd1f2e56f8
|
Optimize Item#intersects() by only checking to see if there are at least one intersection.
|
2015-08-25 11:45:28 +02:00 |
|
Jürg Lehni
|
7ca8ce3cbb
|
Actually use selfOp argument for self operations.
Appears to be working fine.
|
2015-08-24 21:02:42 +02:00 |
|
Jürg Lehni
|
e242634011
|
Minor code clean-up.
|
2015-08-24 12:59:10 +02:00 |
|
Jürg Lehni
|
4be48cec16
|
A lot more work to correctly support overlapping edge cases in boolean operations: intersect(), exclude(), subtract()
|
2015-08-24 12:30:14 +02:00 |
|
Jürg Lehni
|
75f669d839
|
Implement proper method to determine which segment to choose when encountering overlaps.
|
2015-08-24 04:36:49 +02:00 |
|
Jürg Lehni
|
15bcf2a7aa
|
More work on supporting overlaps in boolean operations other than unite().
|
2015-08-23 22:42:57 +02:00 |
|