js-2dmath
Version:
Fast 2d geometry math: Vector2, Rectangle, Circle, Matrix2x3 (2D transformation), Circle, BoundingBox, Line2, Segment2, Intersections, Distances, Transitions (animation/tween), Random numbers, Noise
72 lines (38 loc) • 2.71 kB
Markdown
<a name="Beizer"></a>
## Beizer
Stability: 1 (Only additions & fixes)
**reference**: [http://pomax.github.io/bezierinfo/](http://pomax.github.io/bezierinfo/)
**reference**: [https://github.com/jackcviers/Degrafa/blob/master/Degrafa/com/degrafa/geometry/utilities/BezierUtils.as](https://github.com/jackcviers/Degrafa/blob/master/Degrafa/com/degrafa/geometry/utilities/BezierUtils.as)
**reference**: [http://cagd.cs.byu.edu/~557/text/ch7.pdf](http://cagd.cs.byu.edu/~557/text/ch7.pdf)
**reference**: [http://algorithmist.wordpress.com/2009/02/02/degrafa-closest-point-on-quad-bezier/](http://algorithmist.wordpress.com/2009/02/02/degrafa-closest-point-on-quad-bezier/)
**reference**: [http://algorithmist.wordpress.com/2009/01/26/degrafa-bezierutils-class/](http://algorithmist.wordpress.com/2009/01/26/degrafa-bezierutils-class/)
<a name="Beizer-cubic"></a>
* **cubic** (*cp0x*: Number, *cp0y*: Number, *cp1x*: Number, *cp1y*: Number, *cp2x*: Number, *cp2y*: Number, *cp3x*: Number, *cp3y*: Number): Beizer
cp0 - start point
cp1 - start control point
cp2 - end control point
cp3 - end point
<a name="Beizer-from3Points"></a>
* **from3Points** (*cp0x*: Number, *cp0y*: Number, *cp1x*: Number, *cp1y*: Number, *cp2x*: Number, *cp2y*: Number): Beizer
For implementation see Figure 21.2
**reference**: [http://pomax.github.io/bezierinfo/](http://pomax.github.io/bezierinfo/)
*todo*: DO IT!
<a name="Beizer-quadric"></a>
* **quadric** (*cp0x*: Number, *cp0y*: Number, *cp1x*: Number, *cp1y*: Number, *cp2x*: Number, *cp2y*: Number): Beizer
<a name="Beizer-quadricFrom3Points"></a>
* **quadricFrom3Points** (*cp0x*: Number, *cp0y*: Number, *cp1x*: Number, *cp1y*: Number, *cp2x*: Number, *cp2y*: Number)
For implementation see Figure 21.1
**reference**: [http://pomax.github.io/bezierinfo/](http://pomax.github.io/bezierinfo/)
<a name="Beizer-solve"></a>
* **solve** (*out_vec2*: Vec2, *curve*: Beizer, *t*: Number): Vec2
Solves the curve (quadric or cubic) for any given parameter t.
**source**: [https://github.com/hyperandroid/CAAT/blob/master/src/Math/Bezier.js](https://github.com/hyperandroid/CAAT/blob/master/src/Math/Bezier.js)
<a name="Beizer-getPoints"></a>
* **getPoints** (*curve*: Beizer, *npoints*: Number): Vec2[]
Solve the curve npoints times and return the solution array.
**see**: [Polygon.fromBeizer](#Beizer-Polygon.fromBeizer)
<a name="Beizer-length"></a>
* **length** (*curve*: Beizer, *step*: Number): Number
Calculate the curve length by incrementally solving the curve every substep=CAAT.Curve.k. This value defaults
to .05 so at least 20 iterations will be performed.
*todo*: some kind of cache maybe it's needed!