Commit graph

6977 commits

Author SHA1 Message Date
Jürg Lehni
45f5bf84e8 Enforce creation of Curve#values getter despite hidden parameter. 2017-02-12 12:15:59 +01:00
Jürg Lehni
286765f4b0 Further optimizations in getOverlaps() 2017-02-11 21:32:11 +01:00
Jürg Lehni
23202d0c80 Some code optimizations and cleanup. 2017-02-11 21:25:42 +01:00
Jürg Lehni
1b50355585 Improve getCurveIntersections() for use with neighboring curves.
As needed by bezier offsetting code.
2017-02-11 21:19:47 +01:00
Jürg Lehni
5736ebaa19 Merge pull request #1253 from iconexperience/LineGetDistance
Add Line.getDistance() and use it in Curve.getOverlaps()
2017-02-11 21:18:31 +01:00
iconexperience
af7b22a708 Add Line.getDistance() and use it in Curve.getOverlaps() 2017-02-07 16:15:41 +01:00
Jürg Lehni
13f4773985 Fix documentation of Project#hitTestAll()
Relates to #536
2017-02-06 18:36:00 +01:00
Jürg Lehni
b23c272d69 Minor code cleanup. 2017-02-06 16:46:22 +01:00
Jürg Lehni
4588a90952 Expose Curve.getCurvesIntersections()
To be used in offsetting code to check for self-intersections.
2017-02-06 16:37:05 +01:00
Jürg Lehni
fafbd9ad36 Expose Curve. getCurveLineIntersections() for curve offsetting. 2017-02-05 21:59:56 +01:00
Jürg Lehni
8c3c771891 Streamline handling of abscissa and ordinate flipping. 2017-02-05 21:59:29 +01:00
Jürg Lehni
1f768c69d2 Move private getPeaks() to Curve.getPeaks()
It will be of use in the offsetting code as well.
2017-02-05 14:20:43 +01:00
Jürg Lehni
7fc029d98b More quality related tweaks in getWinding() 2017-02-04 21:55:44 +01:00
Jürg Lehni
fb4a0b1fe0 No need to change the winding values here.
But onPath is crucial. Relates to #1073
2017-02-04 21:38:56 +01:00
Jürg Lehni
4d6ebe2f3f Switch to absolute winding values in getWinding()
That’s what the previous code was already doing, but cryptically so. Relates to #1073
2017-02-04 21:38:17 +01:00
Jürg Lehni
0e8b304715 Improve handling of quality value in getWinding()
Relates to #1073
2017-02-04 21:37:05 +01:00
Jürg Lehni
bbcfa644d9 Bring back accidentally removed winding object fallback. 2017-02-04 20:50:22 +01:00
Jürg Lehni
69c124c36c Merge remote-tracking branch 'origin/improved-reorient' into develop
; Conflicts:
;	src/path/PathItem.Boolean.js
2017-02-04 20:20:21 +01:00
Jürg Lehni
535607931c Unit tests for boolean operations without crossings.
Closes #1113
2017-02-04 20:15:23 +01:00
Jürg Lehni
9af936514e Minor code cleanups. 2017-02-04 20:14:35 +01:00
Jürg Lehni
6ad5bfafee Implement unit test for #1073
Closes #1073, closes #1074
2017-01-25 07:55:37 -05:00
Jürg Lehni
d18fa8bb03 Support multiple gradient offsets at 0
Closes #1241
2017-01-24 18:14:56 -05:00
Jürg Lehni
4833c588e5 Improve comments. 2017-01-24 08:22:03 -05:00
Jürg Lehni
1806b5959e Improve tangent direction handling in isCrossing()
Find unambiguous vectors by taking inception points and “peaks” into account.

Relates to #1073, #1074
2017-01-24 07:50:40 -05:00
Jürg Lehni
a410aafaf2 Remove unused property. 2017-01-24 06:52:27 -05:00
Jürg Lehni
8bbbe149ea More simplifications related to reorientPaths() 2017-01-22 12:08:54 -05:00
Jürg Lehni
f77621f67d Various improvements to new reorient() code
- Merge insideWindings object with operators lookup
- Optimize handling of excluded paths
- Improve contour handling in unite operations
2017-01-22 11:44:40 -05:00
Jürg Lehni
4e215b0eab Unify naming of bezier coordinates in internal calculations. 2017-01-17 12:05:32 +01:00
Jürg Lehni
6e96fd6be5 Replace accidental substitution of Numerical.CURVETIME_EPSILON. 2017-01-17 11:24:33 +01:00
Jürg Lehni
da52f1f685 Remove Numerical.TOLERANCE 2017-01-16 17:48:26 +01:00
Jürg Lehni
13accee9fd Some code optimizations in PathFitter. 2017-01-16 17:47:28 +01:00
Jürg Lehni
12f12da21b Minor code cleanup. 2017-01-15 18:53:23 +01:00
Jürg Lehni
77cb04154a Reduce CURVETIME_EPSILON to 1e-8. 2017-01-15 18:44:02 +01:00
Jürg Lehni
2ca34cddac Prevent rare case where we get excluded intersections without valid curves at the start. 2017-01-15 18:43:47 +01:00
Jürg Lehni
3d4430f8af Improve CurveLocation#equals() to only compare path offsets.
Relying solely on GEOMETRIC_EPSILON when comparing intersections instead of CURVETIME_EPSILON improves reliability.
2017-01-15 18:43:14 +01:00
Jürg Lehni
f996f035ca Rename local epsilon in addCurveIntersections() to fatLineEpsilon. 2017-01-15 18:41:40 +01:00
Jürg Lehni
a101183fba Remove EPSILON constants that are only used in one place in the code.
CLIPPING_EPSILON and WINDING_EPSILON are too specific to be in Numerical.
2017-01-15 11:47:23 +01:00
Jürg Lehni
cf2ebbaaf8 Partly revert 09785a504b
To make the edge-case in #1239 work again. Also add unit tests for edge-case.
2017-01-15 11:34:02 +01:00
Jürg Lehni
fa43e28b7a Slightly improve documentation for #1235 2017-01-11 15:16:22 +01:00
Jürg Lehni
e7b53c8a22 Implement Curve#classify() based on Loop and Blinn.
And use it to simplify curve self-intersection handling.

Relates to #773, #1074, Closes #1235
2017-01-11 15:01:10 +01:00
Jürg Lehni
36f5b314d9 Update JSDoc and a minor documentation fix. 2017-01-11 14:45:52 +01:00
Jürg Lehni
9cb45157b9 Use the correct term for renormalization of curve-time after splitting. 2017-01-10 16:51:53 +01:00
Jürg Lehni
acd6b143db Sample winding at t = 0.5 before trying 0.25 at 0.75
This partly reverts commit 50c910b03a.
2017-01-10 13:34:50 +01:00
Jürg Lehni
2145efb29b Implement more unit tests for #1109
Closes #1109
2017-01-08 15:14:47 +01:00
Jürg Lehni
673d157f31 Implement unit tests for #1116
Closes #1116
2017-01-08 15:07:40 +01:00
Jürg Lehni
0ae2ded9cc Fix handling of hit-test tolerance on scaled items with #applyMatrix = false
Closes #1195
2017-01-08 14:34:58 +01:00
Jürg Lehni
50c910b03a Switch back to sampling winding at t = 1/4, 2/4, 3/4
Due to curve-time clamping, this should now be OK.

Relates to #1073
2017-01-06 14:23:27 +01:00
Jürg Lehni
8ba6e19a2c Bring back handling of onPath edge cases in getWinding()
Relates to #1073
2017-01-06 14:22:20 +01:00
Jürg Lehni
1c7d19bba0 Improve getWinding() reliability by clamping curve-time to tMin <= t <= tMax 2017-01-06 14:17:38 +01:00
Jürg Lehni
31aa68b2d1 Some further code cleanup for 3c2588fdec 2017-01-06 14:15:32 +01:00