Jan
3f893c9fb7
Change winding calculation for points on path
...
Add a winding if the point is on the path and windings canceled each other. See discussion at #1109
2016-07-20 10:47:01 +02:00
Jürg Lehni
1264c2764c
Shorten code statement from #1111
2016-07-20 10:29:27 +02:00
Jan
08f633e7e6
Transfer handle when removing segment
2016-07-20 10:05:03 +02:00
Jürg Lehni
08a23e3318
Boolean: Further improve segment sorting approach.
2016-07-19 16:14:46 +02:00
Jürg Lehni
2c8f4f9453
Boolean: Fix sort function to produce correct resutls on all browsers.
2016-07-19 14:55:57 +02:00
Jürg Lehni
0b672cfb62
Merge branch 'new-winding' into develop
2016-07-19 14:27:45 +02:00
Jürg Lehni
32d8c969fb
Clean up handling of #_set(), #set() and #initialize()
...
Convention:
- #_set() is for actually setting properties, e.g. on Point, Size, so that derived classes can reuse other parts (e.g. SegmentPoint)
- #set() is a shortcut to #initialize() on all basic types, to offer the same amount of flexibility when setting values.
2016-07-18 20:11:01 +02:00
Jürg Lehni
3f058e6471
Split #resolveCrossings() into #resolveCrossings() and #reorient()
...
Closes #973
2016-07-18 14:04:51 +02:00
Jürg Lehni
7acb5bee45
Boolean: More refactoring and code simplifications.
2016-07-18 14:02:20 +02:00
Jürg Lehni
e94e872cda
Move #getInteriorPoint() to PathItem, and refactor it a bit more.
2016-07-17 23:04:42 +02:00
Jürg Lehni
9b6fdb8952
Optimize #getInteriorPoint() further.
...
No need for two separate loops as it can all be done in one pass.
2016-07-17 21:08:22 +02:00
Jürg Lehni
fc18f821b1
Implement simplification of #getInteriorPoint()
...
As suggested by @iconexperience in https://github.com/paperjs/paper.js/issues/1075#issuecomment-233196940
2016-07-17 20:51:53 +02:00
Jürg Lehni
4bb2f7a8fc
Revert a row of recent changes that break example in #1091
2016-07-17 20:35:36 +02:00
Jürg Lehni
c9100a2b61
Merge remote-tracking branch 'origin/develop' into new-winding
...
; Conflicts:
; src/path/PathItem.Boolean.js
2016-07-17 19:52:20 +02:00
Jürg Lehni
09785a504b
Boolean: Further tweak epsilons values.
...
Thanks to improved winding code, we can now reduce them to the point where the #_validOverlapsOnly hack can be removed altogether without introducing new issues.
2016-07-17 19:38:10 +02:00
Jürg Lehni
fe9acae985
Winding: More code refactoring and documentation.
2016-07-17 19:36:13 +02:00
Jürg Lehni
064cee1629
Boolean: Sort segments to give non-ambiguous segments preference when tracing.
...
Relates to #1075
2016-07-16 23:55:16 +02:00
Jürg Lehni
91e67887da
Winding: Some improvements to comments and documentation.
2016-07-16 20:17:20 +02:00
Jürg Lehni
b1037f89f1
Winding: Add back support for open paths.
...
Includes refactoring of some related code.
2016-07-16 20:01:36 +02:00
Jürg Lehni
7d675dab13
Some minor cleanups.
2016-07-14 18:58:12 +02:00
Jürg Lehni
7da70181cc
Move addWinding() into getWinding()
...
Allowing the reuse of a whole lot of shared variables and leading to some nice simplifications.
2016-07-14 18:53:23 +02:00
Jürg Lehni
cad2858070
Use same naming for prev* variables as elsewhere in boolean code.
2016-07-14 18:02:42 +02:00
Jürg Lehni
acfe6cddeb
Boolean: Improve handling of open paths.
...
Relates to #1089
2016-07-14 10:49:12 +02:00
Jürg Lehni
083a2c6e0d
Boolean: Prevent rare exception where an encountered segment is not part of a valid path anymore.
...
Relates to #1091
2016-07-14 09:14:11 +02:00
iconexperience
46ea9da423
Small cleanup in getWinding()
2016-07-13 11:07:12 +02:00
iconexperience
916a712737
Improved and simplified addWinding and getWinding
2016-06-23 07:54:27 +02:00
Jürg Lehni
827abd21b8
More refactoring for a328f5b04b
2016-06-16 12:07:38 +02:00
Jürg Lehni
e80b2ff043
Some code-cleanup for a328f5b04b
2016-06-16 11:48:29 +02:00
Jürg Lehni
85c680820e
No more need for #_getCurves() since it now does the same as #getCurves()
...
#getCurves() works both on Path and CompoundPath. Relates to #1073 , #1075
2016-06-16 11:16:56 +02:00
Jürg Lehni
1a392bb5db
Rename monoCurves -> curves where full curves are dealt with now.
...
For better clarity. Relates to #1073 , #1075
2016-06-16 11:15:27 +02:00
iconexperience
a328f5b04b
Revamp winding calculation so it can determine the winding in horizontal and vertical direction. Monotonic curves are new only created on demand.
2016-06-16 10:13:10 +02:00
sapics
c5b4828ace
Fix to cover the case when Numerical.solveQuadratic return -1 in path._getMonoCurves culculation
2016-06-16 13:51:44 +09:00
Jürg Lehni
28543deaf5
Boolean: Handle situations where seg.getNext() can be null.
...
Closes #1056
2016-06-13 14:17:47 +02:00
Jürg Lehni
693898a5b1
No more need for two passes of findBestIntersection()
...
Goodbye strict-mode :)
2016-06-13 12:49:57 +02:00
Jürg Lehni
8da82fed19
Mark all segments as visited when processing intersection and subtraction, not just overlaps.
2016-06-13 12:09:17 +02:00
Jürg Lehni
af5a5b5f2d
Make findBestIntersection() more strict and improve comments.
2016-06-13 12:08:44 +02:00
Jürg Lehni
94853669f6
Do not complain about open paths if they would not contain an area when closed.
2016-06-13 12:08:04 +02:00
Jürg Lehni
7241edd98a
Implement a more refined strategy to handle 'contour' segment in unite boolean operations.
...
Improvement for the fix in 648beb33e9
for #1054 , solves the issues described in https://github.com/paperjs/paper.js/issues/1054#issuecomment-225356983
2016-06-13 11:58:18 +02:00
Jürg Lehni
34c35e26bd
Switch to sampling only one location for winding contribution.
...
Closes #1073
2016-06-13 11:26:02 +02:00
Jürg Lehni
ed3e283802
Fix Item#importJSON() to preserve #parent on existing, already inserted items.
...
Closes #1041
2016-06-10 17:45:02 +02:00
Jürg Lehni
e7f7d7c5d1
Fix jshint error caused by #1065
2016-06-10 17:28:46 +02:00
Jürg Lehni
648beb33e9
Take type of boolean operation into account in getWinding()
...
Relates to #1054
2016-06-10 13:04:57 +02:00
Jürg Lehni
1f4e4f2f60
Implement boolean simplification suggested by @iconexperiene
...
See https://github.com/paperjs/paper.js/issues/1054#issuecomment-222517963
2016-06-10 12:06:08 +02:00
Jürg Lehni
719392dd2c
Merge pull request #1060 from iconexperience/patch-3
...
Check for prevTime >= tMin and prevTime <= tMax
2016-06-10 12:00:23 +02:00
Jan
e564955501
Correclty implement sorting of intercepts
...
`Array.sort()` without comparison function does not sort by numeric value, but by unicode characters (103 comes before 93 by this sorting), therefore a simple comparison function is required.
2016-06-07 16:44:42 +02:00
Jan
b735a3ec95
Fix getInteriorPoint()
...
getInteriorPoint() could return a point outside the path as explained in #1064
This fix excludes curve's start points from intercept detection to prevent double counting, it ensures that all intercepts are collected and the intercepts are sorted by x-value.
2016-06-07 16:11:37 +02:00
Jan
9f93f6ee78
Check for prevTime >= tMin and prevTime <= tMax
...
Parameter scaling should only be done if the curve was actually split previously. This only happened if prevTime greater tMin and less tMax.
2016-06-01 14:38:44 +02:00
Jürg Lehni
8d5c922c50
Simplify code from #971 and activate unit test for it again.
2016-02-14 22:15:55 +01:00
Jan
406e6c95b9
Adjust comments to match new implementation
2016-02-14 21:44:34 +01:00
iconexperience
e2eaf87fcb
Improve handling of points on paths in getWinding()
2016-02-14 20:57:24 +01:00