Johan Sundström
|
1b129feebf
|
Handle exportSVG({ precision: 0 }) correctly
|
2015-10-27 15:33:09 -07:00 |
|
Jürg Lehni
|
ac7c272401
|
Clean up link references about kappa.
|
2015-10-26 21:43:38 +01:00 |
|
Jürg Lehni
|
a1e4b9fa3c
|
Release version v0.9.25
|
2015-10-25 11:24:42 +01:00 |
|
Jürg Lehni
|
238801e485
|
Improve docs for boolean operations.
|
2015-10-25 09:41:43 +01:00 |
|
Jürg Lehni
|
e9d54a05f0
|
Minor change in the way #reorient() is called.
|
2015-10-24 23:13:13 +02:00 |
|
Jürg Lehni
|
c61cb804cb
|
Implement boolean operations intersect() and subtract() for open path with closed paths.
Closes #757
|
2015-10-24 22:41:51 +02:00 |
|
Jürg Lehni
|
648985fcd2
|
Fix yet another issue with Path#curves and Path#_add()
Including a unit test to prevent regression.
|
2015-10-24 18:11:30 +02:00 |
|
Jürg Lehni
|
19e3136892
|
Address small issue in Path#getLocationAt() when paths are empty.
|
2015-10-24 17:46:20 +02:00 |
|
Jürg Lehni
|
fcd4fe824c
|
Pass Item.NO_INSERT to internally created paths and do not rely on insertAbove() to always return a result.
If `this` itself is not in the DOM, insertAbove() will fail.
|
2015-10-24 17:45:22 +02:00 |
|
Jürg Lehni
|
1fc17766fb
|
Address remaining issue with curves being wrongly linked up after adding new segments.
|
2015-10-24 17:43:22 +02:00 |
|
Jürg Lehni
|
ae2bed9cf0
|
Fix issue of faulty curves list after inserting segments at the end of open paths.
|
2015-10-24 17:00:37 +02:00 |
|
Jürg Lehni
|
39731808b8
|
Switch from imprecise trigonometric method to Curve.getParameterOf()
And from !hasHandles() to isStraight(), as we can now handle all straight curves.
|
2015-10-24 12:23:25 +02:00 |
|
Jürg Lehni
|
780b999220
|
Fix typo.
|
2015-10-24 11:55:59 +02:00 |
|
Jürg Lehni
|
b9a0f5f659
|
Further simplify code.
|
2015-10-24 11:29:15 +02:00 |
|
Jürg Lehni
|
4678697638
|
Some refactoring and added comments to @sapics code in Curve.getNearestParameter()
|
2015-10-24 11:14:08 +02:00 |
|
sapics
|
89a45a6682
|
Use cubic equation solution for faster calculation
|
2015-10-24 14:54:57 +09:00 |
|
sapics
|
294904eac7
|
Faster curve.getNearestParameter when curve has no handles
|
2015-10-24 11:39:50 +09:00 |
|
Jürg Lehni
|
c8cc653004
|
Merge Path#_getOffset() with CurveLocation#getOffset()
|
2015-10-23 19:57:25 +02:00 |
|
sapics
|
502558a321
|
Fix variable leaks
|
2015-10-23 09:45:39 +09:00 |
|
Jürg Lehni
|
5be9e1dde5
|
Remove unused variable.
|
2015-10-22 15:30:29 +02:00 |
|
Jürg Lehni
|
813ea48932
|
Remove unused local reference.
|
2015-10-22 14:46:17 +02:00 |
|
Jürg Lehni
|
85f7134fe6
|
Reduce curve-time epsilon, and improve comments about other epsilon values.
|
2015-10-22 10:34:49 +02:00 |
|
Jürg Lehni
|
bafb6794a6
|
Introduce separate epsilon for fat-line clipping code, and reduce curve-time epsilon.
|
2015-10-21 23:44:24 +02:00 |
|
Jürg Lehni
|
e9c3e72f60
|
Simplify handling of winding overlap-adjustment in isValid()
|
2015-10-21 15:02:53 +02:00 |
|
Jürg Lehni
|
a79212b920
|
Make handling of points on infinite lines in Line.getSide() more clear.
|
2015-10-21 10:00:11 +02:00 |
|
Jürg Lehni
|
a9710cf7c0
|
Fix Line.getSide() call.
|
2015-10-21 09:35:55 +02:00 |
|
Jürg Lehni
|
0cb792de93
|
Reverse sign of Line.getSignedDistance()
Closes #789
|
2015-10-21 09:35:40 +02:00 |
|
Jürg Lehni
|
7c37a4a4d2
|
Revert "No need for special length handling in propagateWinding()"
This reverts commit 8c702ce5b4 .
|
2015-10-21 09:35:17 +02:00 |
|
Jürg Lehni
|
f8595e93c6
|
Improve some comments.
|
2015-10-21 02:45:57 +02:00 |
|
Jürg Lehni
|
169f18617c
|
Address more pending TODOs.
|
2015-10-21 02:40:12 +02:00 |
|
Jürg Lehni
|
7a95625a13
|
Remove debug code and TODO from CurveLocation#isCrossing()
|
2015-10-21 02:36:43 +02:00 |
|
Jürg Lehni
|
8c702ce5b4
|
No need for special length handling in propagateWinding()
|
2015-10-21 02:32:56 +02:00 |
|
Jürg Lehni
|
3daa7f78b4
|
Some comment clean-ups.
|
2015-10-21 02:24:54 +02:00 |
|
Jürg Lehni
|
341fe1ab4e
|
Remove all boolean debugging and streamline code.
|
2015-10-21 02:16:17 +02:00 |
|
Jürg Lehni
|
2cf637d13b
|
Merge remote-tracking branch 'origin/boolean-fix' into develop
|
2015-10-21 01:44:15 +02:00 |
|
Jürg Lehni
|
43cf20096a
|
Implement Curve.getNearestParameter()
|
2015-10-21 01:43:14 +02:00 |
|
Jürg Lehni
|
8c3d9df06c
|
Further fine-tune the various EPSILON values based on edge-case tests.
|
2015-10-21 01:42:26 +02:00 |
|
Jürg Lehni
|
5d6b761d3a
|
Introduce separate WINDING_EPSILON and improve GEOMETRIC_EPSILON.
New values are based on a lot of testing.
|
2015-10-21 01:16:52 +02:00 |
|
Jürg Lehni
|
eb62530958
|
Improve CurveLocation#equals().
|
2015-10-21 01:15:46 +02:00 |
|
Jürg Lehni
|
1f476c2107
|
Improve CurveLocation#isTouching() to better handle straight lines.
|
2015-10-21 01:10:24 +02:00 |
|
Jürg Lehni
|
1073340eeb
|
Do not use GEOMETRIC_EPSILON in Curve.getParameterAt()
This caused issues in some rare edge-cases.
|
2015-10-21 01:09:03 +02:00 |
|
Jürg Lehni
|
d543658c43
|
Remove old version of Curve#getParameterOf()
|
2015-10-21 00:17:05 +02:00 |
|
Jürg Lehni
|
140fba56cc
|
Fix Line#isCollinear() and #isOrthogonal()
|
2015-10-20 23:37:37 +02:00 |
|
Jürg Lehni
|
bcd6520e66
|
Merge handling of self-intersection crossings with normal crossings.
Shorter code and no additional glitches.
|
2015-10-20 23:03:40 +02:00 |
|
Jürg Lehni
|
08122131dc
|
Use isOverlap() instead of _overlap everywhere.
|
2015-10-20 23:02:50 +02:00 |
|
Jürg Lehni
|
6ccd78e8af
|
Go back to simpler code to handle visited segments.
It appears that the imprecisions addressed in 6cdead0e8c have since disappeared.
|
2015-10-20 23:02:19 +02:00 |
|
Jürg Lehni
|
7422e0710f
|
Some changes to boolean debug logging.
|
2015-10-20 22:04:30 +02:00 |
|
Jürg Lehni
|
3aa7507ce1
|
Avoid issues with imprecision in CurveLocation#getCurve() / trySegment()
|
2015-10-20 22:04:04 +02:00 |
|
Jürg Lehni
|
447feea1da
|
Improve Curve#getParameterOf() to first check curve points with zero epsilon.
|
2015-10-20 22:03:45 +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
|
5dac7e9d29
|
Reduce maximum recursion again in addCurveIntersections()
32 has lead to many deadlocks.
|
2015-10-20 16:35:30 +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
|
93e9e54ae5
|
Make sure we cannot find two intersections between two lines.
Adresses point 2. in https://github.com/paperjs/paper.js/issues/805#issuecomment-148503018
|
2015-10-20 15:34:09 +02:00 |
|
Jürg Lehni
|
f2cce4c84d
|
Rename variable to be less ambiguous.
|
2015-10-20 15:21:03 +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
|
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 |
|
Jürg Lehni
|
eb2f7e293a
|
Streamline mouse event handling between View and Item.
Consolidating code and making View#onMouseDown/Up/Move/... events work.
|
2015-10-17 18:13:00 +02:00 |
|
sapics
|
8dfb5191fa
|
Fix curve evaluate function to finite
|
2015-10-17 14:38:27 +09:00 |
|
Jürg Lehni
|
3314668a0c
|
Streamline mouse event handling between View and Item.
Consolidating code and making View#onMouseDown/Up/Move/... events work.
|
2015-10-14 16:25:36 +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 |
|
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
|
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
|
c9f5c02ee4
|
Decrease GEOMETRIC_EPSILON
This appears to be better aligned with the new Curve#getParameterOf() behavior.
|
2015-10-11 17:00:01 +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
|
61db3d9d01
|
Improve handling of boolean debug options.
|
2015-10-11 16:57:43 +02:00 |
|
Jürg Lehni
|
6cdead0e8c
|
Add fallback strategy when ending up in a dead-end in tracePaths().
This simple fix appears to be able to catch quite a few glitches with very small curves.
|
2015-10-11 16:56:41 +02:00 |
|
Jürg Lehni
|
247e80f569
|
Update to latest prepro.js with proper support for strings and scientific numbers.
|
2015-10-11 15:50:25 +02:00 |
|
Jürg Lehni
|
841381f520
|
Reactivate new overlap handling.
It appears to work better with the new Curve.getParameterOf()
|
2015-10-11 10:17: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
|
99909953a8
|
Use colors to distinguish faulty boolean paths.
|
2015-10-09 11:07:43 +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
|
48bb0a1be4
|
Address old TODO in getWinding()
|
2015-10-09 10:33:43 +02:00 |
|
Jürg Lehni
|
0839dbe1f5
|
New overlap handling is producing new glitches.
Turn it off for now, until further analysis has been done.
|
2015-10-09 10:27:25 +02:00 |
|
Jürg Lehni
|
b2127a83ad
|
Revert "Do not start with segments with multiple intersections."
This reverts commit 5129fb0050 .
|
2015-10-09 10:22:54 +02:00 |
|
Jürg Lehni
|
514e6651e6
|
Revert "Avoid all intersections as starting points for boolean paths."
This reverts commit 9590578339 .
|
2015-10-09 10:19:05 +02:00 |
|
Jürg Lehni
|
c45ae4b51a
|
Revert "Never starting in intersections allows for further code simplifications."
This reverts commit 892154e8f8 .
|
2015-10-09 10:18:45 +02:00 |
|
Jürg Lehni
|
892154e8f8
|
Never starting in intersections allows for further code simplifications.
|
2015-10-09 00:03:34 +02:00 |
|
Jürg Lehni
|
9590578339
|
Avoid all intersections as starting points for boolean paths.
|
2015-10-08 23:56:18 +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
|
5129fb0050
|
Do not start with segments with multiple intersections.
Simplifies the required checks at the end, and generally reduces number edge cases.
|
2015-10-08 23:38:41 +02:00 |
|
Jürg Lehni
|
c9eba83cc7
|
Improve detection of start segments.
Segments with multiple intersections need to be checked thoroughly to avoid errors.
|
2015-10-08 23:13:37 +02:00 |
|
Jürg Lehni
|
e92a71e8c7
|
Switch to improved version of Line. getSignedDistance()
Based on the error analysis by @iconexperience outlined in #799
|
2015-10-08 22:56:05 +02:00 |
|
Jürg Lehni
|
5c70f47b6f
|
Fix colors in reportWindings code.
|
2015-10-07 23:37:09 +02:00 |
|
Jürg Lehni
|
15d797ac55
|
Improve linkIntersections() to prevent endless recursions in linked intersections.
|
2015-10-07 17:20:08 +02:00 |
|