mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-07 13:22:07 -05:00
Improve Curve#getPart() to directly handle reversed curves and write docs for it.
This commit is contained in:
parent
6fb4b7e3c4
commit
2bed611648
2 changed files with 23 additions and 2 deletions
|
@ -404,6 +404,17 @@ var Curve = Base.extend(/** @lends Curve# */{
|
||||||
return this._segment2._point.subtract(this._segment1._point);
|
return this._segment2._point.subtract(this._segment1._point);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new curve as a sub-curve from this curve, its range defined by
|
||||||
|
* the given parameters. If {@code from} is larger than {@code to}, then
|
||||||
|
* the resulting curve will have its direction reversed.
|
||||||
|
*
|
||||||
|
* @param {Number} from the curve-time parameter at which the sub-curve
|
||||||
|
* starts
|
||||||
|
* @param {Number} to the curve-time parameter at which the sub-curve
|
||||||
|
* ends
|
||||||
|
* @return {Curve} the newly create sub-curve
|
||||||
|
*/
|
||||||
getPart: function(from, to) {
|
getPart: function(from, to) {
|
||||||
return new Curve(Curve.getPart(this.getValues(), from, to));
|
return new Curve(Curve.getPart(this.getValues(), from, to));
|
||||||
},
|
},
|
||||||
|
@ -655,12 +666,21 @@ statics: {
|
||||||
|
|
||||||
// TODO: Find better name
|
// TODO: Find better name
|
||||||
getPart: function(v, from, to) {
|
getPart: function(v, from, to) {
|
||||||
|
var flip = from > to;
|
||||||
|
if (flip) {
|
||||||
|
var tmp = from;
|
||||||
|
from = to;
|
||||||
|
to = tmp;
|
||||||
|
}
|
||||||
if (from > 0)
|
if (from > 0)
|
||||||
v = Curve.subdivide(v, from)[1]; // [1] right
|
v = Curve.subdivide(v, from)[1]; // [1] right
|
||||||
// Interpolate the parameter at 'to' in the new curve and cut there.
|
// Interpolate the parameter at 'to' in the new curve and cut there.
|
||||||
if (to < 1)
|
if (to < 1)
|
||||||
v = Curve.subdivide(v, (to - from) / (1 - from))[0]; // [0] left
|
v = Curve.subdivide(v, (to - from) / (1 - from))[0]; // [0] left
|
||||||
return v;
|
// Return reversed curve if from / to were flipped:
|
||||||
|
return flip
|
||||||
|
? [v[6], v[7], v[4], v[5], v[2], v[3], v[0], v[1]]
|
||||||
|
: v;
|
||||||
},
|
},
|
||||||
|
|
||||||
hasHandles: function(v) {
|
hasHandles: function(v) {
|
||||||
|
|
|
@ -1189,7 +1189,8 @@ var Path = PathItem.extend(/** @lends Path# */{
|
||||||
*
|
*
|
||||||
* @param {Number} index the index of the curve in the {@link Path#curves}
|
* @param {Number} index the index of the curve in the {@link Path#curves}
|
||||||
* array at which to split
|
* array at which to split
|
||||||
* @param {Number} parameter the parameter at which the curve will be split
|
* @param {Number} parameter the curve-time parameter at which the curve
|
||||||
|
* will be split
|
||||||
* @return {Path} the newly created path after splitting, if any
|
* @return {Path} the newly created path after splitting, if any
|
||||||
*/
|
*/
|
||||||
split: function(index, parameter) {
|
split: function(index, parameter) {
|
||||||
|
|
Loading…
Reference in a new issue