Commit graph

220 commits

Author SHA1 Message Date
Jürg Lehni
ac7c272401 Clean up link references about kappa. 2015-10-26 21:43:38 +01: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
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
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
d2c762997f Address improvements mentioned by @hkrish in #794 2015-10-04 18:36:18 +02:00
Jürg Lehni
00f1d5089f Clean up Numerical code a bit. 2015-10-02 18:56:41 -05:00
Jürg Lehni
f6f9d963eb Shorten Numerical.solveQuadratic() a bit. 2015-10-02 15:46:15 -05:00
sapics
c6de2f7f23 Fix to minimize floating point noise 2015-10-02 15:39:51 -05:00
Jürg Lehni
7f7d35a38a Clean-up epsilon definitions. 2015-10-02 01:05:45 -05:00
Jürg Lehni
4b4ccbac09 Make GEOMETRIC_EPSILON so that overlap edge-cases are correctly matched.
Relates to #784
2015-10-01 20:45:08 -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
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
ce95043e99 Lower geometric epsilon.
Differences slightly above 1e-8 where observed.
2015-09-21 10:54:17 -04:00
Jürg Lehni
1e5c1bafaf Increase geometric epsilon to better match collinear lines.
Needs more testing, but seems to perform well.

Relates to #786
2015-09-16 02:31:37 +02:00
Jürg Lehni
f029d5f9da Write docs for the new EPSILON values. 2015-09-13 13:41:53 +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
fb5f8c0115 Introduce GEOMETRIC_EPSILON, for isOrthogonal(), isCollinear() and overlap checks.
Relates to #777
2015-09-12 10:35:47 +02:00
Jürg Lehni
215bbe2e8e Fix issue in Numerical.solveCubic() / solveQuadratic()
We need to include EPSILON tolerance in the comparison with bounds values.
2015-08-30 22:57:33 +02:00
Jürg Lehni
e476672748 Use better epsilon values in Numerical.solveQuadratic() and solveCubic()
To finally satisfy both #541 and #708.

With this change in place, https://github.com/paperjs/boolean-test is also finally back to run with 0 errors. Woop!
2015-08-18 23:47:28 +02:00
Jürg Lehni
dbac9c06de Bring back private UIDs for Color.
SVG Export for multiple gradients was broken.
2015-06-16 18:12:40 +02:00
Jürg Lehni
b541088c6f A whole lot of documentation clean-up. 2015-06-16 17:50:37 +02:00
Jürg Lehni
ce41447793 Prevent invalid invinite solutions in Numerical.solveQuadratic()
Closes #708
2015-06-16 12:30:25 +02:00
Jürg Lehni
27bb8a356f Implement unique ids, and fix issue with Base.deserialize()
Gradient and Symbol were overriding each other in the dictionary, and dictionary entries could not contain references to other dictionary entries.

Closes #690
2015-05-11 19:39:39 +02:00
Jürg Lehni
15813107c0 Remove unused variables. 2015-02-26 13:44:09 +01:00
Jürg Lehni
55e2f6610a Rename nRoots to count. 2015-01-10 22:06:11 +01:00
Jürg Lehni
22be259167 Deal with edge cases in Curve.solveCubic() where small cubics are very close to lines.
Also reduce Numerical.EPSILON again, as required by some rare edge cases.

Relates to #541.
2015-01-10 22:05:42 +01:00
Jürg Lehni
665d154c95 Simplify control-flow in Numerical.solveCubic() a bit. 2015-01-10 17:57:37 +01:00
Jürg Lehni
814512f562 No need to check solutions for bounds again. 2015-01-05 22:01:56 +01:00
Jürg Lehni
920469426e Remove the harmony version of Number.isFinite() in favor of the generally available global isFinite() for now. 2015-01-05 16:17:11 +01:00
Jürg Lehni
afc14b9634 Reduce Numerical.TOLERANCE to 1e-6, and use the same value across the boolean code.
Yields very good results now, across all tests.
2015-01-04 15:54:50 +01:00
Jürg Lehni
4371e92191 Reduce EPSILON to 1e-13.
Reducing further to 1e-14 starts producing new issues in boolean operations code.
2015-01-03 21:03:13 +01:00
Jürg Lehni
6359738618 Do not offset bounds in cubic solver by MACHINE_EPSILON, as this is how comparisons are performed with values offset by tolerances elsewhere in the library.
Doing it differently here produced various errors in fat-line clipping and boolean code.
2015-01-02 23:14:19 +01:00
Jürg Lehni
f0fdb804ec Reduce value of EPSILON to the lowest amount that does not cause issues in boolean-test. 2015-01-02 22:37:36 +01:00
Jürg Lehni
cdfd21ddd3 Switch to using new cubic solver by @hkrish 2015-01-02 21:44:29 +01:00
Jürg Lehni
6a11532322 Clean up and simplify code a bit further. 2014-09-28 11:49:46 +02:00
Jürg Lehni
48cb05a181 Replace tabs with 4 white-spaces. 2014-08-16 19:24:54 +02:00
Jürg Lehni
68db4f9b59 Forgotten in previous commit. 2014-05-13 13:23:37 +02:00
Jürg Lehni
19630d6229 Fix spelling mistakes. 2014-04-24 19:34:49 +02:00
Jürg Lehni
f002c633a7 Remove trailing white spaces and ensure newlines at the end. 2014-04-06 13:48:03 +02:00
Jürg Lehni
e22fa3a664 Update copyright notice. 2014-01-04 01:47:16 +01:00
Jürg Lehni
6654dca6bf Improve precision of Numerical.findRoot() 2013-12-30 14:18:33 +01:00
Jürg Lehni
8395541298 Clean up docs and fix spelling mistakes. 2013-12-29 15:44:26 +01:00
Jürg Lehni
10aa8d7b4a Fix accidental documentation leakage into global scope. 2013-12-28 22:34:00 +01:00
Jürg Lehni
a6b3a3a2ec Share code that handles bounds in roots between solveQuadratic() and solveCubic() 2013-12-17 15:38:22 +01:00
Jürg Lehni
76ea7ef066 Inline EPSILON and TOLERANCE for better performance in Numerical. 2013-12-17 15:27:55 +01:00
Jürg Lehni
b5b75dfce4 Clean-up Numerical code. 2013-12-01 23:54:52 +01:00
hkrish
d64df44a78 Correct tolrance check (±EPSILON) in numerical solving methods. 2013-11-24 21:40:22 +01:00
Jürg Lehni
eae526f38c Update Numerical.solveQuadratic() / solveCubic() to optionally filter results to be in a given range. 2013-10-18 13:52:01 +02:00