Jürg Lehni
1ee5b2c126
Fix references to Bootstrap.js in comments.
2014-01-05 17:41:38 +01:00
Jürg Lehni
ea63d4c288
Merge branch 'refs/heads/master' into v8-optimizations
...
Conflicts:
src/core/Base.js
src/style/Color.js
2014-01-05 05:01:13 +01:00
Jürg Lehni
e22fa3a664
Update copyright notice.
2014-01-04 01:47:16 +01:00
Jürg Lehni
6a11547942
Fix issue in Curve.getLength() for linear curves with sub-ranges.
...
Closes #376 .
2013-12-30 14:20:05 +01:00
Jürg Lehni
8395541298
Clean up docs and fix spelling mistakes.
2013-12-29 15:44:26 +01:00
hkrish
0b4da28c1e
Optimize handling of horizontal curves in Curve#_getWinding
2013-12-29 12:38:59 +01:00
hkrish
39c52f326e
New _getWinding method in Curve. This method return the winding contribution of this curve w.r.t. the resulting PathItem
2013-12-25 20:41:19 +01:00
hkrish
b4c7bcae5e
Indent with Tabs like rest of paperjs code.
2013-12-25 20:33:51 +01:00
hkrish
3b013c0720
Add an optional ignoreLinear parameter to Curve#divide, so that new segments on linear curves will keep their correct bezier handles.
2013-12-23 23:38:12 +01:00
hkrish
20b6d699db
Consistently return curve parameter on Line intersections as well, so that sorting intersections wouldn't fail.
2013-12-23 23:34:26 +01:00
hkrish
20fbdcffda
Subdivide only if tDiff on both curves have failed to converge more than 80%
2013-12-23 23:27:23 +01:00
Jürg Lehni
81651a7379
Prevent V8 "assignment to parameter in arguments object" deoptimizations.
...
Some getter-like functions still need fixing, but this might require a fix in Straps.js first.
2013-12-17 23:28:55 +01:00
Jürg Lehni
3dbad9c477
Replace delete in favor of setting to undefined to prevent V8 deoptimization.
2013-12-17 23:27:48 +01:00
Jürg Lehni
45ed406aa3
Remove unnecessary exports.
2013-12-16 21:58:32 +01:00
Jürg Lehni
94b27e933a
Some more variable renaming.
2013-12-16 21:56:41 +01:00
Jürg Lehni
e9d2c6cfd4
Further simplify code a bit.
2013-12-16 21:45:06 +01:00
Jürg Lehni
d984a2cd87
Use correct value for tolerance in non-fatline code again.
2013-12-16 21:41:46 +01:00
Jürg Lehni
a59a42376a
Clean up coding style a bit.
2013-12-16 21:40:40 +01:00
hkrish
5fe092672e
Fatline clipping: fix c-hull corner case.
2013-12-14 00:31:42 +01:00
hkrish
a0013da7f8
Merge branch 'master' into fatline
...
* master: (71 commits)
Define the default value for Color#alpha.
Some minor changes in Satie example.
Include point property in stroke hit-results.
Clean up code and comments in various places.
Use Point.read() for center parameter in Item#rotate
Make hit-tests work again with projects that don't have a view.
Write documentation for Item#anchor.
Keep support for Item#registration for now as well, since there are some scripts on the mailing list that use it.
Rename Item#registration to Item#anchor
No need to run Radial Rainbows in HiDPI mode.
Include Satie Sound Analysis Example.
Only start dragging if none of the mosedown events have stopped propagation.
Fix item-level mousedrag events again.
Allow layers to select children again, since it breaks examples otherwise.
Fix documentation issues in TextItem.
Make hit-test tolerance dependent of view#matrix
Implement options.selected for hit-testing segments and handles.
Fix typo in new segment / handle hit-testing code.
Use same stroke tolerance approach for hit-testing joins and caps as well.
Do not factor in view matrix into Item#globalMatrix.
...
2013-12-13 20:04:43 +01:00
hkrish
5fb75593c2
Remove enpoint fix from curve-line intersections, since it's already handled
2013-12-13 20:01:58 +01:00
hkrish
ef66b6dbe6
Fatline clipping: fix convergence check to be more strict
2013-12-10 20:45:25 +01:00
hkrish
ac41f0d3c1
Fatline clipping: fix issue where one of the curves has been converged completely and other hasn't.
2013-12-09 23:27:26 +01:00
hkrish
0598afd77b
Fatline clipping: remove old #curveIntersection method
2013-12-09 19:36:14 +01:00
hkrish
2fa5e3d417
Remove debug helpers
2013-12-09 19:31:58 +01:00
hkrish
82ab532885
Fatline clipping: clipConvexHull method handles only the clipping part
2013-12-09 19:31:04 +01:00
hkrish
35acebb91d
Fatline clipping: remove old fatline code. This is handled by the CurveIntersections method now
2013-12-09 19:30:03 +01:00
hkrish
6041b2b09d
Fatline clipping: new #CurveIntersections method
2013-12-09 19:28:56 +01:00
hkrish
b471b90229
Fatline clipping: Iterate to find intersections
2013-12-08 23:29:38 +01:00
hkrish
68b9adac95
Modify old clipFatline code to a much cleaner version
2013-12-08 23:15:18 +01:00
hkrish
45e35aad83
New CurveCurveINtersections code; doing the fatline clip inplace.
2013-12-08 23:14:13 +01:00
Jürg Lehni
8cec512cc2
Take matrices into account in PathItem#getIntersections()
2013-12-08 22:00:40 +01:00
hkrish
6c5e18ae45
New clip convex-hull routine
2013-12-08 19:09:59 +01:00
Jürg Lehni
fc4e88c039
Change the way segments, points and handles are selected and deselected.
...
There is no interdependency anymore, except for selecting a segment selects the point and both handles, and selecting a curve selects both points and handles.
Closes #355
2013-12-08 18:06:31 +01:00
hkrish
834c8d17a9
Declutter getConvexHull code.
2013-12-08 00:18:47 +01:00
hkrish
baa189bb19
getConvexHull returns upper and lower part of the c-hull seperately
2013-12-08 00:11:13 +01:00
Jürg Lehni
448d8d9b99
Clean-up bool-fix code.
2013-12-01 23:48:59 +01:00
Jürg Lehni
971268cd72
Merge remote-tracking branch 'origin/master' into bool-fix
2013-12-01 23:28:29 +01:00
Jürg Lehni
6b448ad320
Fix more edge cases in #contains().
...
This should fix issue #346 for good.
2013-12-01 23:13:11 +01:00
hkrish
b625ec5b6d
Merge branch 'master' into bool-fix
...
* master: (127 commits)
Fix edge cases in Curve._getWinding()
Copy over parent style in Item#reduce().
Fire key-up events for all currently pressed keys.
Improve and streamline key-handling logic.
Use renamed __options object in build script too.
Correctly apply matrices to Raster items in #importSVG()
Support passing DOM element IDs in calls to #importSVG()
Update to latest Prepro.js and switch from global options object to __options, to avoid name clashes.
Make directly setting view.onFrame work again.
Update to latest Straps.js and remove unnecessary isArray argument in Base.each()
Add missing DOCS comments.
Fix issue where exceptions in onFrame handlers block future animations.
Fix issue with JSON import.
Add Node JSONtoPDF example.
Implement Item#data cloning.
Remove unnecessary Color#clone() since it's doing the same as Base#clone() now.
Remove Base.merge() and use a new Straps.js feature instead.
Improve build script to include dist file in paperjs.org website.
Bump version to v0.9.14
Fix setting #radius on Shape.Circle.
...
2013-11-30 14:50:18 +01:00
Jürg Lehni
dfc0886a8b
Fix edge cases in Curve._getWinding()
...
Use same rules for lines as for curves, exclude end points of lines. Closes #346 .
2013-11-30 14:21:47 +01:00
Jürg Lehni
93d10983ee
Update to latest Prepro.js and switch from global options object to __options, to avoid name clashes.
2013-11-29 20:26:38 +01:00
hkrish
492e78df7d
Handle intersection special case, when two curves' start and end points overlap
2013-11-11 21:20:32 +01:00
Jürg Lehni
4e34a27da4
Some more work on comments.
2013-10-29 21:20:19 +01:00
Jürg Lehni
dc3bd30ee3
Rename some variables and clean up code a bit more.
2013-10-29 16:19:39 +01:00
Jürg Lehni
de01ef1c21
Clean up code from previous merge.
2013-10-29 16:09:35 +01:00
Jürg Lehni
ef972949c8
Merge branch 'refs/heads/intersect-fix'
...
Conflicts:
src/path/Curve.js
2013-10-29 16:06:02 +01:00
hkrish
ac04029f6e
Curve-line intersection fix
2013-10-29 15:52:46 +01:00
Jürg Lehni
63e4bd5db2
Do not use the point of the rotated curve to evaluate the parameter of the line.
...
Use the non-rotated curve instead.
2013-10-29 15:46:20 +01:00
Jürg Lehni
f20e8240cd
Use new range feature of solveCubic()
2013-10-29 15:44:42 +01:00
hkrish
bec1a91812
Calculate correct parameter for Curve-Line intersections
2013-10-29 00:10:20 +01:00
Jürg Lehni
b4850b572a
Improve variable naming.
2013-10-20 01:57:11 +02:00
Jürg Lehni
ddeacb1763
More code clean up.
2013-10-20 01:41:31 +02:00
Jürg Lehni
caa50236dd
Simplify winding algorithm by reusing orientation check.
2013-10-20 01:24:07 +02:00
Jürg Lehni
7c4518e4d0
Clean up some variable names.
2013-10-20 00:59:12 +02:00
Jürg Lehni
b91c8f93f8
Remove Curve. _getEdgeSum() again, and inline code in Path.isClockwise()
2013-10-18 19:51:54 +02:00
Jürg Lehni
f8106ae18f
Improve code handling special winding cases.
2013-10-18 15:20:32 +02:00
Jürg Lehni
75a209c002
Handle more special cases in winding algorithm.
2013-10-18 15:15:54 +02:00
Jürg Lehni
4f27be8f12
Include new, improved point in path algorithm based on winding number.
...
It's also possible to switch to using the canvas's native isPointInPath() through options.nativeContains
2013-10-18 14:22:59 +02:00
Jürg Lehni
a07538b205
Use same tolerance in Curve.isLinear() as in Curve#isLinear().
2013-10-17 20:19:34 +02:00
Jürg Lehni
24e46bee60
Merge branch 'refs/heads/boolean-fix'
2013-10-08 20:50:47 +02:00
Jürg Lehni
0860cdd941
Clean up code a bit.
2013-10-08 20:49:24 +02:00
Jürg Lehni
1ee6bb7e79
Use isZero() when checking for straight curves in Curve.getLength()
2013-09-23 08:13:32 -07:00
Jürg Lehni
cae4520665
Simplify addCurveLineIntersections() code.
2013-09-22 18:18:03 -07:00
hkrish
f9b4321a56
Boolean -fix: Interpolate to find the parameter of intersection in linear curve segments
2013-09-21 17:26:14 +02:00
hkrish
0a22211393
Conform to paperjs coding style.
2013-09-21 15:26:14 +02:00
hkrish
669fb1638a
Boolean -fix: Preserve the order of intersections found (Curve-Line) according to the PathItem they belong to.
2013-09-13 02:44:51 +02:00
Jürg Lehni
19c7788617
Fix documentation irregularities.
2013-08-23 19:45:28 -07:00
Jürg Lehni
6b19f25f4b
Fix typos in comments.
2013-08-08 15:21:35 -07:00
Jürg Lehni
ef4eee1064
Pass true for isParameter in Curve#divide() calls.
...
Closes #252 .
2013-07-04 19:39:55 -07:00
Jürg Lehni
6833e9d8e0
Fix {@default 0.5} values in documentation.
2013-06-27 18:15:10 -07:00
Jürg Lehni
f9925a71ea
Improve documentation for Path#split(), Curve#divide() and Curve#split().
...
Closes #189 .
2013-06-27 17:18:57 -07:00
Jürg Lehni
9f5b543ab5
Fix getCurveAt() signature.
2013-06-27 17:13:00 -07:00
Jürg Lehni
38db18c2e1
Remove isParameter from Curve.evaluate()
2013-06-27 17:12:35 -07:00
Jürg Lehni
52c889428b
Remove Curve.create() in favor of direct constructor.
2013-06-25 09:54:13 -07:00
Jürg Lehni
1866e4ff15
Remove need for all special arguments in minification, and restructure code to avoid warnings.
2013-06-24 10:15:54 -07:00
Jürg Lehni
a4535edbb9
Bring back _class names, since code minification breaks reliance on constructor.name.
...
Closes #248 .
2013-06-23 20:18:32 -07:00
Jürg Lehni
258c404b98
Move curvature calculations into Curve.evaluate(), and define unit tests for it.
2013-06-18 19:00:05 -07:00
Jürg Lehni
619a8f88f8
Clean up code a bit in Curve#getCurvatureAt().
2013-06-18 18:29:44 -07:00
hkrish
d4d2075040
Fix: Use absolute coordinates from #Curve.getValues() directly while calculating the curvature
2013-06-17 22:27:20 +05:30
Jürg Lehni
8a726f22b2
Clean up comments.
2013-06-17 08:57:30 -07:00
Jürg Lehni
b072df0486
Put isEnd value directly into conditional.
2013-06-17 08:56:42 -07:00
Jürg Lehni
18ad8a235d
Clean up code to follow Paper.js coding conventions.
2013-06-17 08:26:51 -07:00
Jürg Lehni
be6bbb802d
Move calculations of values to where they are needed.
2013-06-17 08:22:28 -07:00
Jürg Lehni
5ff990a84a
Fix global variable leakage, and join sequential variable definitions.
2013-06-17 08:10:57 -07:00
hkrish
2693516844
Implement correct method for calculating curvature on a Path
2013-06-17 15:16:11 +05:30
Jürg Lehni
eb32bad57e
Fix imprecision in #getNearestLocation()
2013-06-15 03:12:29 -07:00
Jürg Lehni
1dee05900f
Move getArea code to other statics block.
2013-06-13 23:16:44 -07:00
Jürg Lehni
610e396d94
Make Curve#_getCrossings() a static method and have it work on curve values directly.
2013-06-13 23:16:00 -07:00
Jürg Lehni
01e48b3322
Improve and clean up fat-line bug fix.
2013-06-13 15:53:28 -07:00
Jürg Lehni
95ecab8a6f
Improve handling of merged CompoundPath style through #getStyle().
...
Only access _style directly in core code if you really know what you're doing!
2013-06-12 20:12:08 -07:00
Jürg Lehni
f45a66d2ee
Filter out curves with zero length in Path#contains() algorithm.
...
Fixes #227
2013-06-12 00:19:54 -07:00
Jürg Lehni
7faf2a9e70
Clean-up @hkrish's changes a bit.
2013-06-09 18:37:08 -07:00
hkrish
d8498b6418
Remove invalid code and unnecessary comments
2013-06-09 22:02:50 +05:30
hkrish
d3405115c1
Use parameter on both curves in CurveLocation objects instead of Point in #getIntersection()
2013-06-08 21:37:43 +05:30
Jürg Lehni
cd7db56249
Remove all create() constructors for basic types since new constructors are now faster.
...
Woop!
2013-05-27 23:57:31 -07:00
Jürg Lehni
10d5de3ed6
Implement a better way to name and export class constructors.
...
This change also simplified the way classes are exported to PaperScope objects.
2013-05-27 12:48:58 -07:00
Jürg Lehni
f9267e7f5c
Some more code clean up and variable renaming.
2013-05-26 17:59:01 -07:00
Jürg Lehni
14962b5c45
Clean up code a bit more.
2013-05-26 17:52:05 -07:00
Jürg Lehni
32709a176b
Fix some comments.
2013-05-26 17:48:36 -07:00
Jürg Lehni
7050edd6e4
Fix point sequence.
2013-05-26 17:40:40 -07:00
Jürg Lehni
90f0679700
Further simplify getConvexHull() by using p0 … p3 point objects.
2013-05-26 17:39:13 -07:00
Jürg Lehni
487c4c4aef
Further simplify getConvexHull() by inlining cross product calculations.
2013-05-26 17:32:44 -07:00
Jürg Lehni
9edab9c3aa
Simplify convex hull algorithm by returning lists of points rather than lines.
...
We can avoid some data redundancy that way at no performance cost.
2013-05-26 17:18:54 -07:00
Jürg Lehni
9540b7f6a9
Use addLineIntersection() in subdivision algorithm as well.
2013-05-26 17:10:29 -07:00
Jürg Lehni
20737c6664
Rename various intersection methods.
2013-05-26 17:06:23 -07:00
Jürg Lehni
5d7cc2fb40
Use new Line.getSignedDistance().
2013-05-26 16:58:49 -07:00
Jürg Lehni
80f9f6061c
Change the way the Line class handles direction vectors and infinite lines.
...
The beginning of performance improvements in the Line class.
2013-05-26 15:44:52 -07:00
Jürg Lehni
1fb0a3a13c
Always provide t parameter for CurveLocations if we know it.
2013-05-25 11:23:59 -07:00
Jürg Lehni
502c76dbce
Start merging fat-line clipping code into Curve class.
...
And add a prepro option for now.
2013-05-24 22:30:13 -07:00
Jürg Lehni
7e5f846190
Remove debugging code.
2013-05-24 17:57:13 -07:00
Jürg Lehni
bd3ac02bbe
Use Curve instead of this.
...
Compresses better and allows passing on function as callback.
2013-05-24 17:52:05 -07:00
Harikrishnan Gopalakrishnan
ce600f4ea4
Fix: #initialize() to correctly convert #getValue() array back to Curve object.
2013-05-11 00:59:30 +03:00
Jürg Lehni
7b8e27ddd9
Further simplify getNearestPoint() algorithm.
2013-05-07 00:07:18 -07:00
Jürg Lehni
3a7547a255
Bring back accidentally removed static functions on Curve.
2013-05-05 23:14:49 -07:00
Jürg Lehni
db42dfdfc1
Implement simpler strategy to iteratively find nearest points on paths.
...
Idea based on method described on http://pomax.github.io/bezierinfo/
2013-05-05 23:05:57 -07:00
Jürg Lehni
f704b00e00
Implement static Line.intersect() and use it to speed up Curve.getIntersections()
...
Unfortunately doesn't seem to have any impact!
2013-05-04 10:22:10 -07:00
Jürg Lehni
85de8a0b7d
Clean up Curve#divide() code.
2013-05-03 21:00:46 -07:00
Jürg Lehni
3101989974
Adjust precision of Curve#isFlatEnough() to cover rare edge cases.
2013-05-03 21:00:37 -07:00
hkrish
e75cc32a3b
Merge branch 'master' of https://github.com/paperjs/paper.js
...
* 'master' of https://github.com/paperjs/paper.js :
Undo recent change to Curve#getIntersection() since it breaks some boolean operations.
ý5:q
2013-05-03 19:24:03 +02:00
Jürg Lehni
840e879ba8
Undo recent change to Curve#getIntersection() since it breaks some boolean operations.
2013-05-02 11:32:24 -07:00
hkrish
10553c1bd8
Merge upstream
2013-05-02 14:18:24 +02:00
Jürg Lehni
e8fed1bdf0
Improve Curve#getIntersections() by avoiding further subdivision of flat curves.
2013-05-01 18:40:57 -07:00
Jürg Lehni
c61e8d57b9
Fix issue with recursive call of Curve.getIntersections().
2013-05-01 18:24:54 -07:00
hkrish
f239a3980d
Fix: Update the getIntersections method signature in recursive calls
2013-05-01 13:29:02 +02:00
Jürg Lehni
883e3ad563
Define CurveLocation#intersection as a way to retrieve the CurveLocation on the intersecting path when using Path#getIntersections().
2013-04-30 18:41:26 -07:00
Jürg Lehni
c7ab32c501
Rearrange linear curve conditions.
2013-04-26 14:37:37 -07:00
Jürg Lehni
c513a24f46
Handle intersection between linear curves without recursive subdivision.
...
Closes #207 .
2013-04-26 14:31:42 -07:00
Jürg Lehni
74f6a93b33
Optimize Curve.getArea().
2013-04-25 17:47:11 -07:00
Jürg Lehni
898e216668
Implement Path#getArea() and CompoundPath#getArea().
2013-04-25 17:37:19 -07:00
Jürg Lehni
80a1129eab
Consistently use 'this' rather than 'Curve'.
2013-04-25 17:19:00 -07:00
Jürg Lehni
1b5ca4dec9
Rename Curve._addIntersections() to Curve.getIntersections()
2013-04-25 17:17:53 -07:00
Jürg Lehni
eaa6e3bb6b
Improve Curve#getCrossings() documentation and code.
2013-04-25 11:08:50 -07:00
Jürg Lehni
d7e075d316
Handle contour edge cases in Path#contains().
...
Closes #208 .
2013-04-25 11:03:49 -07:00
Jürg Lehni
dc9a9c42d2
Cleanup solveCubic() further.
2013-04-21 08:44:41 -07:00
Jonathan Puckey
52e7c39567
Improve Curve documentation.
2013-04-21 15:43:57 +02:00
Jürg Lehni
c45ad26b67
Remove tolerance parameter from solveCubic() / solveQuadratic() since we should always use EPSILON.
2013-04-20 19:58:42 -07:00
Jürg Lehni
14aa8e5dea
Improve precision of Numerical.solveCubic() and fix issues in Curve.getCrossings().
...
Closes #202 .
2013-04-20 19:14:19 -07:00
Jürg Lehni
461def5383
Fix issue with imprecise tangents / normals to curves at t = 0, 1.
2013-04-20 17:40:19 -07:00
Jürg Lehni
1952e3dc7d
Implement Curve#getCurvatureAt().
2013-04-20 17:26:51 -07:00
Jürg Lehni
9fe1ff951a
Clean up code.
2013-04-09 20:36:38 -07:00
Jürg Lehni
7f245974e6
Implement a faster method to filter out beginnings of intersected curves.
2013-04-09 20:35:31 -07:00
Jürg Lehni
a9a0857ba4
Find a better strategy to avoid duplicate solutions in PathItem#getIntersections().
...
Closes #197 .
2013-04-09 20:27:55 -07:00
Jürg Lehni
d3bb68d0e0
Use faster Array construction.
2013-04-09 07:55:09 -07:00
Jürg Lehni
a0b903e49c
Simply call slice() instead of slice(0).
2013-04-06 18:39:17 +02:00
Jürg Lehni
e854254986
Insert linear segments when dividing linear curves.
2013-03-19 16:17:12 -07:00
Jürg Lehni
2230c2888d
Fix issue with Curve#divide() where the wrong curve reference is returned.
2013-03-01 20:19:44 -08:00
Jürg Lehni
02ca95eb46
Avoid accidental global leakage.
2013-02-08 16:12:57 -08:00
Jürg Lehni
6c9c16ad3d
Update copyright information comments, and year.
2013-01-28 18:03:27 -08:00
Jürg Lehni
b0deda9445
Add missing documentation for various location related functions on Curve.
2013-01-28 16:47:45 -08:00
Jürg Lehni
c7d8aebb9e
Swap Curve's bounds scope with point evaluation scope, for proximity to bounds related methods in scope before.
2013-01-28 16:32:04 -08:00
Jürg Lehni
1a438b8b9b
Change Curve#[getPoint / getTangent / getNormal](t) to #[getPoint / getTangent / getNormal](offset, isParamter).
...
Keep deprecated versions around for now.
2013-01-28 16:30:28 -08:00
Jürg Lehni
f09bc84a12
Implement correct handling of Curves / Segments synchronization, improve CurveLocation linking to Curves through their linked Segments, and preserve Curves in Path#split() calls.
2013-01-22 14:46:49 -08:00
Jürg Lehni
ba5aa86411
Include Roger Willcocks in the thanks regarding isSufficentlyFlat.
2013-01-20 14:28:02 -08:00
Jürg Lehni
b05a21d6c9
Fix bug in Curve#getLocationOf().
2013-01-20 14:01:42 -08:00
Jürg Lehni
b04eb2b98f
Implement Path#split() and Curve#split().
2012-12-31 22:28:41 +01:00
Jürg Lehni
e066db4577
Implement Curve#divide().
2012-12-30 19:49:17 +01:00
Jürg Lehni
4185b63d99
Und recent renaming of #getNearest*() methods.
2012-12-30 19:43:35 +01:00
Jürg Lehni
2abefee336
Merge Base.readValue() with Base.read() and rename Base.peekValue() to Base.peek().
...
When called directly on Base, read() reads values, otherwise the specific type of the subclass it is called on.
2012-12-30 16:07:20 +01:00
Jürg Lehni
1b539301ad
Find a better naming convention for the various getLocation* methods (*At for offsets / parameters, *Of for points), implement the missing methods on Curve and use them in Path.
2012-12-27 21:08:03 +01:00
Jürg Lehni
231369fa01
Shorten code a bit, using loops.
2012-12-27 20:46:12 +01:00
Jürg Lehni
cb8f3291d3
Clean up some comments.
2012-12-27 20:19:23 +01:00
Jürg Lehni
5b9d33f32e
Fix imprecision in intersection code by re-introducing tolerance parameter in Curve#isFlatEnough().
2012-12-27 20:13:45 +01:00
Jürg Lehni
3c4978eb04
Rename Curve#getParameter(point) to Curve#getParameterOf(point), to better distinguish from Curve#getParameterAt(length).
2012-12-27 20:09:21 +01:00
Jürg Lehni
68ad4bb5ba
Implement PathItem#getIntersections(path) and Curve#getIntersections(curve) using divide-and-conquer approach, and new Curve.getBounds().
2012-12-27 19:23:03 +01:00
Jürg Lehni
75596e1d03
Move a part of Path.getBounds() code into Curve._addBounds(), and use it to also define Curve.getBounds().
2012-12-27 18:38:55 +01:00
Jürg Lehni
57a9f4fc91
Use constant substitution for Numerical constants as well.
2012-12-27 18:36:59 +01:00
Jürg Lehni
8f093f6dd7
Remove all PORT comments, since we won't port back features to Scriptographer.
2012-12-25 16:07:48 +01:00
Jürg Lehni
734cc1cc61
Undo commit 4445376c0204cb5a2e408c64b77a5b6fa09305ba since it clashes with magnification.
2012-12-21 16:41:57 +01:00
Jürg Lehni
d43cc28aac
Optimise Curve constructors that construct from 4 arguments (points) and 8 (coordinate values).
2012-12-20 18:03:11 +01:00
Jürg Lehni
29a2bc781b
Implement the various bounds getter on Curve too, using caching and the new static Path.get*Bounds methods.
2012-12-18 14:35:21 +01:00
Jürg Lehni
b535d9f843
Implement new Bootstrap feature that allows hiding of getter parameters to make sure beans are produced, and use it across the library.
2012-12-15 19:51:31 +01:00
Jürg Lehni
09ee9a0689
Exclude 1 in parameter range for crossing counting, as segment points would be counted twice otherwise.
2012-12-15 02:27:36 -08:00
Jürg Lehni
16578e6b15
Clean up code.
2012-12-15 02:24:46 -08:00
Jürg Lehni
a36d244eb1
Handle impression in Curve#getCrossings(), causing wrong results when handling circles.
2012-12-15 01:52:23 -08:00
Ben Firshman
73d6c102a6
Fix k leaking into globals
2012-11-20 15:53:04 +00:00
Ben Firshman
dc1161b32a
Fix fullLength leaking into globals
2012-11-20 15:53:03 +00:00
Jürg Lehni
400b454177
Introduce Numerical.isZero(), for comparisons against 0 with a tolerance.
2012-11-05 21:06:13 -08:00
Jürg Lehni
6ed1d67ada
Modernize Bootstrap.js, introduce Base.create() and use it instead of the Constructor.dont hack for object creation without the calling of initialize.
2012-11-03 21:49:37 -07:00
Jürg Lehni
f73717a7e7
Fix issues in Numerical.solveQuadratic(), solveCubic() and Path#contains().
...
Closes #71 .
2012-10-22 18:21:33 -04:00
Jürg Lehni
44ad4d885a
Update link to Kaspar Fischer's PDF with new URL.
2012-10-15 15:48:38 -07:00
Jürg Lehni
9e61995282
Handle parameter matching of beginning and ends of curves separately.
2012-09-30 14:06:31 -07:00
Jürg Lehni
c30ff47930
Remove matrix argument from all hit-testing related methods.
...
We better inverse-transform the point and save the code!
2011-12-25 00:19:01 +01:00
Jürg Lehni
a326b189b4
Improve Curve#isFlatEnough() by finding the right threshold through testing, and remove other less precise solutions.
2011-11-12 01:23:41 +01:00
Jürg Lehni
d43b54a531
Shorten Curve.isFlatEnough() code.
2011-11-11 20:58:33 +01:00
Jürg Lehni
fdd4ee8d31
Switch back to Kaspar Fischer's version of Curve.isFlatEnough, as it produces the best results with dashed lines.
2011-11-11 20:55:31 +01:00
Jürg Lehni
3397931bb2
Be consistent in Numerical. EPSILON comparison rules.
2011-09-22 21:14:16 +02:00
Jürg Lehni
7f81184848
Only intersect lines if their lengths are not conflicting with Numerical.EPSILON comparison of the cross product in Line#intersect().
2011-07-30 11:38:17 +01:00
Jürg Lehni
7d0db22b9b
Use squared distances in nearest point algorithm.
2011-07-30 11:37:07 +01:00
Jürg Lehni
45c7f9c4fc
Port back code to prevent tangents and normals of length 0 from Scriptographer.
2011-07-09 11:20:03 +02:00
Jürg Lehni
833d4968ce
Change root solvers to not produce new arrays each time but fill a passed one that can be reused. Yields io impressive performance improvements.
2011-07-09 10:50:47 +02:00
Jürg Lehni
839107d341
Remove faulty code for calculation of tangents / normals.
2011-07-09 10:35:22 +02:00
Jürg Lehni
ec00150df2
Remove unused variable.
2011-07-09 10:34:18 +02:00
Jürg Lehni
4e1d613ed8
Fix Curve#getLength() again for straight lines.
2011-07-09 10:21:17 +02:00
Jürg Lehni
17b412ce6f
Fix a newly introduced bug in #contains().
2011-07-09 10:17:06 +02:00
Jürg Lehni
8a6d53766e
Explain code a litter better.
2011-07-09 10:11:50 +02:00
Jürg Lehni
8928a7b057
Fix #getCrossings() where calling #getPoint() / #getTangent() was slow and also wrong when a matrix was used.
2011-07-09 10:09:41 +02:00
Jürg Lehni
8606f25542
Switch from using Function#apply() trick for passing curve values as function parameters to simply passing arrays and looking up the values on then.
2011-07-09 10:08:43 +02:00
Jürg Lehni
bb4e71da81
Clean up isFlatEnough() code.
2011-07-08 22:26:22 +02:00
Jürg Lehni
fe37ce6bcb
Clean up comments.
2011-07-07 23:02:26 +02:00