Jürg Lehni
|
18c5a06f45
|
Fix colors in animated boolean operations demo.
|
2015-09-18 23:00:47 +02:00 |
|
Jürg Lehni
|
081de1d12a
|
'exclude' operation needs overlap handling too.
|
2015-09-18 22:29:29 +02:00 |
|
Jürg Lehni
|
a95ba12bc3
|
isCrossing() needs parameter checks on both curves.
|
2015-09-18 22:26:09 +02:00 |
|
Jürg Lehni
|
b5af47a7b1
|
Implement a better approach to calculate Path#clockwise...
...merging code with Path#area.
Closes #788
|
2015-09-18 21:41:54 +02:00 |
|
Jürg Lehni
|
8cf562c57b
|
Revert "Remove special handling of winding contribution on overlaps"
This reverts commit c6a38589e9 .
The special handling seems to be still necessary in some edge cases, e.g. in BooleanOperations.html
|
2015-09-18 21:10:58 +02:00 |
|
Jürg Lehni
|
10eafccd1a
|
Implement 0.75 * handle scaling in curve bounds checks.
|
2015-09-18 21:09:57 +02:00 |
|
Jürg Lehni
|
17dc5eb51a
|
Allow gettings of unstyled bounds on curves without paths.
|
2015-09-18 20:15:18 +02:00 |
|
Jürg Lehni
|
c6a38589e9
|
Remove special handling of winding contribution on overlaps
Looks like the new code handles this correclty now!
|
2015-09-18 18:06:15 +02:00 |
|
Jürg Lehni
|
5af391d333
|
Fix errors in Boolean Operations example.
|
2015-09-18 17:52:14 +02:00 |
|
Jürg Lehni
|
23443dc8f4
|
Clean up boolean code.
|
2015-09-18 17:51:57 +02:00 |
|
Jürg Lehni
|
66b01973f0
|
Simplify exclusion handling for new boolean code.
|
2015-09-18 17:51:43 +02:00 |
|
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
|
73a9989261
|
Fix CurveLocation#isCrossing() for locations in the middle of curves.
|
2015-09-18 17:32:19 +02:00 |
|
Jürg Lehni
|
ae93652b56
|
Clean up getIntersection() methods.
Now that they filter the results on the fly.
|
2015-09-18 17:31:23 +02:00 |
|
Jürg Lehni
|
85311cfb29
|
Improve Path#getArea() and #isClockwise()
|
2015-09-18 17:27:29 +02:00 |
|
Jürg Lehni
|
17356637ac
|
Clean up new CurveLocation code.
|
2015-09-17 10:18:45 +02:00 |
|
Jürg Lehni
|
9c812335e5
|
Curve._filterIntersections() is now without a job.
|
2015-09-17 09:39:22 +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
|
d0332f843f
|
Renamed Curve#reverse() and Segment#reverse() to #reversed()
Since they don't modify the object. Also introduce new Segment#reverse(), which does.
|
2015-09-16 18:16:48 +02:00 |
|
Jürg Lehni
|
857e27e3a8
|
Fix accidental variable leackage.
|
2015-09-16 18:15:26 +02:00 |
|
Jürg Lehni
|
7061bc0e0a
|
Simplify CurveLocation.sort() code
Relates to #787
|
2015-09-16 10:52:51 +02:00 |
|
Jürg Lehni
|
0980ad3fe9
|
Fix remaining issues with curve location sorting.
Relates to #787
|
2015-09-16 10:44:41 +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
|
197aa4b4cf
|
No need to wrap angles as they're always -PI < a < PI.
|
2015-09-16 02:56:24 +02:00 |
|
Jürg Lehni
|
2026e5571e
|
Some code cleanup and comments in isCrossing().
|
2015-09-16 02:54:25 +02:00 |
|
Jürg Lehni
|
e548391276
|
Use the zero-epsilon when checking beginnings and ends of curves for overlaps.
Relates to #786 and #777
|
2015-09-16 02:33:56 +02:00 |
|
Jürg Lehni
|
1e5c1bafaf
|
Increase geometric epsilon to better match collinear lines.
Needs more testing, but seems to perform well.
Relates to #786
|
2015-09-16 02:31:37 +02:00 |
|
Jürg Lehni
|
8f9549dd12
|
Fix non-breaking spaces.
|
2015-09-16 02:29:17 +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
|
60a725b527
|
Implement correct CurveLocation#isCrossing() check.
And improve curve caching. Still needs work.
|
2015-09-15 19:38:28 +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
|
7aef20ae6b
|
Compare intersection points instead of curve time when deciding to merge.
Use same precision indepenent of curve length.
|
2015-09-14 15:18:44 +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
|
fbb0f3f37d
|
Remove left-over debugging code.
|
2015-09-13 21:50:35 +02:00 |
|
Jürg Lehni
|
b231e9b2a8
|
Accept CompoundPath items as children of CompoundPath items.
Just add their children and remove the parent.
Closes #541
|
2015-09-13 16:06:24 +02:00 |
|
Jürg Lehni
|
e2d2c836e5
|
Some boolean code clean-up.
|
2015-09-13 14:19:56 +02:00 |
|
Jürg Lehni
|
ea2ff5ec28
|
Increase precision in Curve.getParameterOf()
Usually only requires 0-1 more iteration.
|
2015-09-13 13:45:20 +02:00 |
|
Jürg Lehni
|
56da70c030
|
No need to pass TOLERANCE.
We're comparing with a default tolerance of 1e-5.
|
2015-09-13 13:43:50 +02:00 |
|
Jürg Lehni
|
f029d5f9da
|
Write docs for the new EPSILON values.
|
2015-09-13 13:41:53 +02:00 |
|