61 lines
2.2 KiB
Haxe
61 lines
2.2 KiB
Haxe
|
|
package utils;
|
|
|
|
class Movement
|
|
{
|
|
|
|
// See this link for more information...
|
|
// http://jonmanatee.blogspot.com/2011/03/moving-beyond-linear-bezier.html
|
|
// you just need to use one for each axis..
|
|
// see http://www.codng.com/2005/07/intersecting-quadcurve2d-part-ii.html
|
|
// and then modify it to go through the point I think penner has a curveThru
|
|
// for instance see my code here:
|
|
// http://forums.swishzone.com/index.php?s=d8b09993f33ccb9361b069fda0bbae89&showtopic=923
|
|
//
|
|
public static function quadraticBezierThru ( t: Float
|
|
, startPoint: Float
|
|
, controlPoint: Float
|
|
, endPoint: Float
|
|
)
|
|
{
|
|
|
|
var newControlPoint = ( 2*controlPoint ) - .5*( startPoint + endPoint );
|
|
var u = 1 - t;
|
|
return Math.pow( u, 2) * startPoint + 2 * u * t * newControlPoint + Math.pow( t, 2 ) * endPoint;
|
|
|
|
}
|
|
|
|
|
|
public static function quadraticBezier ( t: Float
|
|
, startPoint: Float
|
|
, controlPoint: Float
|
|
, endPoint: Float
|
|
)
|
|
{
|
|
|
|
var u = 1 - t;
|
|
return Math.pow( u, 2) * startPoint + 2 * u * t * controlPoint + Math.pow( t, 2 ) * endPoint;
|
|
|
|
}
|
|
|
|
|
|
public static function cubicBezier( t: Float
|
|
, startPoint: Float
|
|
, controlPoint1: Float
|
|
, controlPoint2: Float
|
|
, endPoint: Float
|
|
)
|
|
{
|
|
|
|
var u = 1 - t;
|
|
|
|
return Math.pow( u, 3 ) * startPoint + 3 * Math.pow( u, 2 ) * t * controlPoint1 +
|
|
3* u * Math.pow( t, 2 ) * controlPoint2 + Math.pow( t, 3 ) * endPoint;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|