Commit graph

5688 commits

Author SHA1 Message Date
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
abf70378fe Some more code fixes.
One was breaking unit tests.
2015-09-09 08:15:43 +02:00
Jürg Lehni
155442e706 Increase readability of convex-hull check in self-intersection code. 2015-09-09 08:12:03 +02:00
Jürg Lehni
70f8f1912f Some code clean-up. 2015-09-09 08:06:59 +02:00
Jürg Lehni
332b09c534 More curve interesection optimizations.
Only evaluate points if locations are actually added.
2015-09-09 07:46:48 +02:00
Jürg Lehni
dae8bb630b Avoid checking curves if completely out of control bounds.
This leads to a huge speed increase! Relates to #765
2015-09-09 07:34:28 +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
3f53aa78ce Do not access curve objects for geometry since they might be subdivided.
Partial fix for #765
2015-09-09 07:26:39 +02:00
Jürg Lehni
b96036fb03 Fix strange curve check.
Something went wrong in prior refactoring here. Also, no need to check curve beginnings and ends again, just handles.
2015-09-09 06:25:37 +02:00
Jürg Lehni
98d7703b5c Finish implementing Curve#isStraight and #isLinear()
Closes #652
2015-09-06 18:02:15 +02:00
Jürg Lehni
31d9e1cd6e Implement Curve#isLinear() to check for parametrical linearity.
Along with some unit tests for it.
2015-09-06 17:56:12 +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
9dab662a1f Clean-up various Segment and Curve tests.
Moving functionality back to Path#toShape() since it was too specific, and missleading as part of the exposed Segment API.
2015-09-06 17:27:33 +02:00
Jürg Lehni
71a7cc37e6 Many documentation clean-ups. 2015-09-06 17:20:01 +02:00
Jürg Lehni
b52d343527 Use same notation for all injection scopes. 2015-09-06 16:48:23 +02:00
Jürg Lehni
cf813faa75 Remove all mention of points and square points as units.
And some other doc clean-ups.
2015-09-06 16:37:10 +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
3d89cd71bd Some clean-up work on documentation. 2015-09-06 15:54:11 +02:00
Jürg Lehni
3f509ed51b Merge remote-tracking branch 'origin/develop' into boolean-fix 2015-09-06 15:37:25 +02:00
Jürg Lehni
d02f29e2f1 Remove legacy Color constructor tests. 2015-09-06 15:37:03 +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
cf4e5c2983 Fix typo. 2015-09-06 15:30:38 +02:00
Jürg Lehni
824b0c7e7e Remove legacy Color constructors. 2015-09-06 15:28:46 +02:00
Jürg Lehni
66717868cd Address failing #isLinear() tests. 2015-09-06 14:10:15 +02:00
Jürg Lehni
f91373efd8 Simplify Point#project() 2015-09-06 14:01:04 +02:00
Jürg Lehni
d7fb5cd512 Do not reduce linear curves with handles defined. 2015-09-06 13:21:08 +02:00
Jürg Lehni
26e35322a4 Some reworking of code and comments. 2015-09-06 13:20:57 +02:00
Jürg Lehni
fe5916766a Implement various tests for Curve#isLinear()
Some are currently failing.
2015-09-06 13:20:29 +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
bfbe0b3147 Fix PointText size test on new Safari... 2015-09-06 12:33:41 +02:00
Jürg Lehni
3fa385ac7c Fix typo in previous commit. 2015-09-05 09:56:37 +02:00
Jürg Lehni
af355dc82c Fix false positives in Curve#isLinear() and Segment#isLinear(). 2015-09-03 09:01:07 +02:00
Jürg Lehni
041c31a88a Prevent variable leackage. 2015-09-02 15:54:14 +02:00
Jürg Lehni
b9a07ca538 Address code comments by @iconexperience in #762. 2015-08-31 22:01:18 +02:00
Jürg Lehni
215bbe2e8e Fix issue in Numerical.solveCubic() / solveQuadratic()
We need to include EPSILON tolerance in the comparison with bounds values.
2015-08-30 22:57:33 +02:00
Jürg Lehni
20222be5c6 Minor clean-up in fat-line code. 2015-08-30 19:59:13 +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
bd61390f9d improve break-off condition in curve interesection code.
To prevent arbitrary incorrect solutions occuring when tDiff is very close to zero.
Closes #762.
2015-08-30 14:37:21 +02:00
Jürg Lehni
27aae8b261 Add support for values array and toString object format to Curve constructor. 2015-08-30 14:14:52 +02:00
Jürg Lehni
8f13fa54fc Remove debugger statement. 2015-08-30 13:52:13 +02:00
Jürg Lehni
0cbce044aa Define Curve#_serialize() 2015-08-28 16:18:28 +02:00
Jürg Lehni
e07d8f55ea Add debug logging for intersections again. 2015-08-28 16:18:14 +02:00
Jürg Lehni
0e26b53053 Improve CurveLocation.sort() to handle more edge cases.
Relates to #648
2015-08-28 16:17:54 +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