Jürg Lehni
|
e36319b71a
|
Give PathItem#getIntersections() a way to filter found intersections right away.
And use it in #getCrossings()
|
2015-09-21 10:41:59 -04: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
|
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
|
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
|
9c812335e5
|
Curve._filterIntersections() is now without a job.
|
2015-09-17 09:39:22 +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
|
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
|
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
|
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
|
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
|
19c9a0e722
|
Use the correct points on curve2 when checking intersections at beginnings and ends.
|
2015-09-13 11:52:17 +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
|
4f04dae20f
|
Use the correct GEOMETRIC_EPSILON when matching beginnings and ends of curve in Curve.getParameterOf()
Relates to #777
|
2015-09-12 22:26:16 +02:00 |
|
Jürg Lehni
|
a0730756c1
|
Use correct term for curve parameter renormalization.
|
2015-09-12 22:13:18 +02:00 |
|
Jürg Lehni
|
085cdd74a2
|
Use GEOMETRIC_EPSILON when comparing curve start / end points.
Relates to #777
|
2015-09-12 21:56:53 +02:00 |
|
Jürg Lehni
|
3da921a0b0
|
Improve CompoundPath#reduce() to properly reduce suppaths.
Relates to #779
|
2015-09-12 11:43:41 +02:00 |
|
Jürg Lehni
|
fb5f8c0115
|
Introduce GEOMETRIC_EPSILON, for isOrthogonal(), isCollinear() and overlap checks.
Relates to #777
|
2015-09-12 10:35:47 +02:00 |
|
Jürg Lehni
|
35f3ac87bf
|
Change checks for startConnected / endConnected to support compound-paths.
Closes #778
|
2015-09-12 10:12:17 +02:00 |
|
Jürg Lehni
|
86f404123e
|
Minor code tweaks.
|
2015-09-11 12:07:27 +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
|
abf70378fe
|
Some more code fixes.
One was breaking unit tests.
|
2015-09-09 08:15:43 +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
|
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
|
3d89cd71bd
|
Some clean-up work on documentation.
|
2015-09-06 15:54:11 +02:00 |
|
Jürg Lehni
|
66717868cd
|
Address failing #isLinear() tests.
|
2015-09-06 14:10:15 +02:00 |
|
Jürg Lehni
|
26e35322a4
|
Some reworking of code and comments.
|
2015-09-06 13:20:57 +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
|
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
|
20222be5c6
|
Minor clean-up in fat-line code.
|
2015-08-30 19:59:13 +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
|
0cbce044aa
|
Define Curve#_serialize()
|
2015-08-28 16:18:28 +02:00 |
|
Jürg Lehni
|
d85b4f0c80
|
Fix issues with wrong sorting of CurveLocation in Curve.filterIntersections()
|
2015-08-26 16:56:28 +02:00 |
|