Jürg Lehni
63303a59f4
Change PathItem#getIntersections() so that the simply circularity checks in addLocations() work.
...
This should address the concerns outlined in https://github.com/paperjs/paper.js/issues/805#issuecomment-147850806
2015-10-20 15:18:09 +02:00
Jürg Lehni
e0c31e4a50
Make static getIntersections() methods 'private'.
2015-10-20 10:02:33 +02:00
Jürg Lehni
f1debf401b
Streamline overlap handling code.
2015-10-20 10:02:00 +02:00
iconexperience
f8edf5d8a7
Small refactoring in getConvexHull()
...
Make calculations of distances more concise.
2015-10-12 08:42:36 +02:00
Jürg Lehni
588ddbe011
Add comments to Curve#getParameterOf()
2015-10-11 17:09:04 +02:00
Jürg Lehni
c1d0bd21b8
Improve Curve#getParameterOf() to better handle very small curves.
...
See #799
2015-10-11 16:59:03 +02:00
Jürg Lehni
d20cdf5b73
There can only be one self-intersection per curve.
2015-10-11 09:48:55 +02:00
Jürg Lehni
8a122e19d8
Split self-intersection handling into separate method.
...
Increasing readability of both methods.
2015-10-11 09:26:04 +02:00
Jürg Lehni
7aed221801
Some refactoring in static methods of CurveLocation.
2015-10-11 09:18:50 +02:00
Jürg Lehni
688f580b95
Switch to new Curve.getParameterOf()
...
Simpler code, but improved precision means more glitches to analyze.
2015-10-09 10:34:46 +02:00
Jürg Lehni
939a9fe034
Improve overlap handling by actually storing overlap curves on intersections objects.
...
And properly comparing against them in tracePaths().
2015-10-08 23:54:00 +02:00
Jürg Lehni
8e4bef217a
Change Curve.getParameterOf() to accept a point instead of x, y arguments.
2015-10-06 21:24:58 +02:00
Jürg Lehni
525e35518d
No need to default to 0 anymore.
...
See 1b343d5347 (commitcomment-13622714)
2015-10-06 21:16:49 +02:00
Jürg Lehni
bc736f439f
Have Numerical.CURVETIME_EPSILON / 10 evaluated at preprocess time.
2015-10-06 21:14:43 +02:00
Jürg Lehni
7f4d8d54f0
Reduce epsilon in addCurveIntersections()
...
1/10 of CURVETIME_EPSILON appears to produce good results. It's probably wise to keep it linked.
2015-10-06 21:14:04 +02:00
Jürg Lehni
3ac3df8d32
Rewrite method for linking and choosing multiple intersections in the same location.
...
The special handling of overlaps reduces the amount of remaining glitches substantially.
Relates to #784 .
2015-10-06 21:09:35 +02:00
Jürg Lehni
adabe9126a
Simplify calculation of tMinNew and tMaxNew.
...
As suggested by @iconexperience in https://github.com/paperjs/paper.js/issues/795#issuecomment-145918347
2015-10-06 20:15:15 +02:00
Jürg Lehni
1b343d5347
Rewrite 04cab797db
to only use one return statement.
2015-10-06 16:31:30 +02:00
Jürg Lehni
99d969e962
Merge pull request #798 from iconexperience/Improve-clipConvexHullPart
...
Improve clipConvexHullPart()
2015-10-06 16:21:41 +02:00
Jürg Lehni
3a65c87843
Some code formatting and a fix for a typo in new getConvexHull()
2015-10-06 16:09:35 +02:00
Jan
04cab797db
Improve clipConvexHullPart()
...
Separately handle special cases
2015-10-06 15:25:40 +02:00
Jan
ea035bd9e4
New getConvexHull()
2015-10-06 15:19:33 +02:00
Jürg Lehni
b3d45b6624
Some code clean-up in addCurveIntersections()
2015-10-05 19:32:13 +02:00
Jürg Lehni
c8132584b9
Pass on original curves to addLocation(), to correctly determine p1 and p2.
...
This fixes one glitch in @iconexperience's test suite.
2015-10-05 19:31:38 +02:00
Jürg Lehni
1f03b00f99
Remove handling of converged fat-line, as it causes issues.
...
Example 23 in #784 was caused by this, and the code's removal has not produced any new issues, while it solved 6 issues in @iconexperience's test suite.
Closes #795
2015-10-05 17:20:56 +02:00
Jürg Lehni
86b1b74869
Prevent detection of tiny overlaps and streamline addOverlap() code.
2015-10-03 12:55:32 -05:00
Jürg Lehni
2bed611648
Improve Curve#getPart() to directly handle reversed curves and write docs for it.
2015-10-03 12:55:05 -05:00
Jürg Lehni
6fb4b7e3c4
Change the way overlaps are detected in lines.
...
We don't really care weather they are actually fully collinear, we only really care about the distances from the beginnings- and end-points of one line from the other, since that proximity will affect results elsewhere.
2015-10-03 11:46:50 -05:00
Jürg Lehni
2167e458ae
Since we're using sorting now, we can add all start- / end-point intersections before finding the ones within the curves.
2015-10-03 10:38:45 -05:00
Jürg Lehni
c0bb6890bd
Switch back to CURVETIME_EPSILON now that overlap edge-case appears to be handled.
2015-10-01 20:47:56 -05:00
Jürg Lehni
9b883e5fb6
Introduce new TRIGONOMETRIC_EPSILON with higher precision than GEOMETRIC_EPSILON.
2015-10-01 20:44:27 -05:00
Jürg Lehni
f5012a78e9
Reformat nested ternary operators again.
...
This got messed up in a recent refactoring.
2015-10-01 20:24:47 -05:00
Jürg Lehni
72f9705615
Fix overeager refactoring in c77165be3a
2015-10-01 08:49:26 -05:00
Jürg Lehni
fee3a90329
Fixed leaked globals.
2015-10-01 07:05:00 -05:00
Jürg Lehni
b8c6eb46ad
Fix weirdness of Curve#divide() modifying the wrong Curve object.
2015-10-01 06:52:08 -05:00
Jürg Lehni
c77165be3a
Fix issue in Curve#divide() that lead to intersection segments being linked up wrongly.
...
Relates to #784
2015-10-01 06:21:17 -05:00
Jürg Lehni
53dd726057
Rename ignoreStraight argument to _setHandles
2015-10-01 05:55:22 -05:00
Jürg Lehni
75a004187e
Improve Line.intersect() to more reliably find interesctions at the beginnings / ends.
...
Relates to #784
2015-10-01 04:38:48 -05:00
Jürg Lehni
53ff973f06
Perform the faster check first.
2015-10-01 03:38:35 -05:00
Jürg Lehni
5f706a4a5d
Use lower tolerance in bezier clipping code.
...
This really should be Numerical.CURVETIME_EPSILON, but I get better results using Numerical.GEOMETRIC_EPSILON. Perhaps Numerical.CURVETIME_EPSILON / 2 is the right value to use though.
2015-09-30 14:19:40 -05:00
Jürg Lehni
9bcf369e6a
Ony split potentially self-intersecting curves if there are actual canditates.
2015-09-30 13:44:51 -05:00
Jürg Lehni
45040abc53
More clean-ups for #773
...
- Use local variables instead of array lookups for values used repeatetly, and merge with pre-existing variables.
- Add some more comments and reference to long explaining post in issue.
2015-09-30 13:40:01 -05:00
Jürg Lehni
1231153553
Start cleaning up code from #773
...
- Use Line object isntead of static methods
- Do not rely on Math.sign() as it's not supported on all browsers
- Wrap lines at 80 char width.
2015-09-30 13:07:55 -05:00
Jürg Lehni
07874034e9
Merge pull request #793 from iconexperience/Fix-for-#773
...
Fix for #773
2015-09-30 11:51:37 -05:00
Jan
ec70fa1806
Fix for #773
...
Indroduced more reliable method for finding self intersection on curves.
2015-09-30 12:19:09 +02:00
Jürg Lehni
317b809fee
Only calculate non-parametric bezier curve if values are actually used.
2015-09-26 11:46:54 -05:00
Jürg Lehni
ea3cc63e2e
Reformat code a bit.
2015-09-26 07:41:03 -04:00
Jan
3fa810a557
Bugfix for #791 and performance improvement
...
Prevent infinite loop for degenerate curve. Additionally only calculate sy if necessary and save one call to `Curve.solveCubic`
2015-09-26 07:36:12 -04:00
Jürg Lehni
fd927cbe22
Properly solve issues with self-intersecting special case.
...
(e.g. shapes resembling the infinity sign)
2015-09-24 12:49:39 -04:00
Jürg Lehni
cc7e60e51a
Revert db1ecdddd5
and fix issue properly this time.
...
Hopefully?
2015-09-23 12:44:00 -04:00