Jürg Lehni
|
3aa7507ce1
|
Avoid issues with imprecision in CurveLocation#getCurve() / trySegment()
|
2015-10-20 22:04:04 +02:00 |
|
Jürg Lehni
|
60109e897a
|
Use 'preserve' to protect #getPoint() against overriding.
|
2015-10-20 19:22:33 +02:00 |
|
Jürg Lehni
|
3ae0ca6c94
|
Remove dependency on curve-time comparisons when comparing locations.
Locations on consecutive short curves (< 1e-7) where unable to merge due to diff > 1.
Relates to #805
|
2015-10-20 17:53:40 +02:00 |
|
Jürg Lehni
|
7cea3488c0
|
Remove dependency on curve-time parameter when figuring out which locations to merge.
|
2015-10-20 17:17:31 +02:00 |
|
Jürg Lehni
|
da43953828
|
For curves with only one segment, pick the smaller diff between the two locations.
Addresses point 1. in https://github.com/paperjs/paper.js/issues/805#issuecomment-147770300
|
2015-10-20 16:34:40 +02:00 |
|
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
|
9762d2c9e6
|
Revert "Simplify circular neighbor checks."
This reverts commit 2bb3df3314 .
|
2015-10-13 09:35:13 +02:00 |
|
Jürg Lehni
|
b5c59c881c
|
Revert "One more simplification."
This reverts commit 0ce825f8c9 .
|
2015-10-13 09:35:08 +02:00 |
|
Jürg Lehni
|
0ce825f8c9
|
One more simplification.
|
2015-10-13 08:34:48 +02:00 |
|
Jürg Lehni
|
2bb3df3314
|
Simplify circular neighbor checks.
Relates to #805.
|
2015-10-13 08:32:05 +02:00 |
|
Jürg Lehni
|
9de6aa97f2
|
Third attempt at correctly handling paths as circular lists.
Relates to #805.
|
2015-10-13 07:59:19 +02:00 |
|
Jürg Lehni
|
f6f6a58fe6
|
Improve handling of paths as circular lists.
|
2015-10-13 07:27:25 +02:00 |
|
Jürg Lehni
|
2e552853fd
|
Handle paths as circular lists in CurveLocation.insert() as well.
Relates to #805
|
2015-10-13 07:23:15 +02:00 |
|
Jürg Lehni
|
0553201de8
|
Add forgotten semi-colon.
|
2015-10-13 00:11:24 +02:00 |
|
Jürg Lehni
|
3d33bbdfa3
|
Clean-up CurveLocation#equals()
|
2015-10-13 00:10:21 +02:00 |
|
Jürg Lehni
|
f77579079e
|
Improve CurveTime#equals() to handle locations that wrap around beginnings / ends of paths.
See https://github.com/paperjs/paper.js/issues/805#issuecomment-147470240 for details.
|
2015-10-13 00:06:34 +02:00 |
|
Jürg Lehni
|
bbc0029252
|
Go back to simple overlap handling.
It appears to produce less glitches.
|
2015-10-11 17:05:23 +02:00 |
|
Jürg Lehni
|
4500e520ea
|
Minor code clean-up.
|
2015-10-11 17:00:23 +02:00 |
|
Jürg Lehni
|
7aed221801
|
Some refactoring in static methods of CurveLocation.
|
2015-10-11 09:18:50 +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
|
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
|
05bc6afdbb
|
Always give intersection segment priority over current segment if valid.
Fixes example 22 in #784, doesn't seem to introduce new issues, unlike last time I tried this approach.
|
2015-10-05 05:34:22 +02:00 |
|
Jürg Lehni
|
5601e21996
|
Make sure the two locations are actually part of the same path before comparing index / parameter values.
|
2015-10-04 10:14:04 +02:00 |
|
Jürg Lehni
|
ebc956353f
|
Move code to adjust segments after split to CurveLocation.
|
2015-10-04 02:25:33 +02:00 |
|
Jürg Lehni
|
79cb216684
|
Define CurveLocation#isOverlap() and improve documentation of various related methods.
|
2015-10-03 17:15:45 -04:00 |
|
Jürg Lehni
|
50c7473337
|
Improve CurveLocation#add() and #equals() to better merge locations.
Before, very close locations over curve boundaries where not merged.
|
2015-10-03 10:40:13 -05:00 |
|
Jürg Lehni
|
53ff973f06
|
Perform the faster check first.
|
2015-10-01 03:38:35 -05:00 |
|
Jürg Lehni
|
d385d25a51
|
Include comment regarding CurveLocation#equals() modification.
|
2015-09-30 13:48:28 -05:00 |
|
Jürg Lehni
|
2a7d1c5728
|
Improve CurveLocation#equals()
Relates to #784, described in https://github.com/paperjs/paper.js/issues/784#issuecomment-143161586
|
2015-09-30 12:47:02 -05: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
|
812ac63e60
|
Compare points instead of curve time paramters for better precision and reliability.
|
2015-09-21 10:53:53 -04:00 |
|
Jürg Lehni
|
1ad95c9020
|
Improve CurveLocation.add() to always merge duplicates.
We nee to check neighbors of the found location too.
|
2015-09-21 07:06:41 -04:00 |
|
Jürg Lehni
|
1302df0cb8
|
Fix variable leackage.
|
2015-09-20 23:22:31 +02:00 |
|
Jürg Lehni
|
a95ba12bc3
|
isCrossing() needs parameter checks on both curves.
|
2015-09-18 22:26:09 +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
|
17356637ac
|
Clean up new CurveLocation code.
|
2015-09-17 10:18:45 +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
|
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
|
8f9549dd12
|
Fix non-breaking spaces.
|
2015-09-16 02:29:17 +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
|
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
|
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
|
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
|
4770cfe2f8
|
Minor intersection refactoring clean up.
|
2015-09-10 05:18:56 +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
|
8f13fa54fc
|
Remove debugger statement.
|
2015-08-30 13:52:13 +02:00 |
|