# RE: [Flashcoders] positioning along bezier curve

```> Jason Merrill wrote:
> I am drawing a bezier curve using:
>
> mySprite.graphics.curveTo(X1, Y1, X2, Y2);
>
> Works, and so I know where the control point is, and the desintation
> point, but is there a way to calculate a point midway along the curve?
> I'd like to position a sprite there.

Hi Jason,

The findPointOnCurve function (shown below) will give you exactly what you
need. Just plug in your coordinates. Use a value of .5 for t to return the
curve's midpoint.

The findPointOnCurve function is used by Zeh Fernando's mc_tween2.as for the
MovieClip.bezierSlideTo(...). I have also been successful adapting it for
use in conjunction with Jack Doyle's TweenLite.as (http://www.greensock.com)
for tweening an arc.

private function findPointOnCurve(p1x:Number, p1y:Number, cx:Number,
cy:Number, p2x:Number, p2y:Number, t:Number):Object {
// From Zeh Fernando's mc_tween2.as (http://hosted.zeh.com.br/mctween/)
// Returns the points on a bezier curve for a given time (t is 0-1);
// This is based on Robert Penner's Math.pointOnCurve() function
return {x:p1x + t*(2*(1-t)*(cx-p1x) + t*(p2x - p1x)),
y:p1y + t*(2*(1-t)*(cy-p1y) + t*(p2y - p1y))};
}

// Usage:
mySprite.graphics.clear();
mySprite.graphics.lineStyle(3, 0x00FF00, 100);
mySprite.graphics.moveTo(start.x, start.y);
mySprite.graphics.curveTo(control.x, control.y, finish.x, finish.y);
var p:Object = findPointOnCurve(start.x, start.y, control.x, control.y,
finish.x, finish.y, .5);
mySprite.graphics.lineStyle(10, 0xFF0000, 100);
mySprite.graphics.moveTo(p.x, p.y);
mySprite.graphics.lineTo(p.x + 1, p.y - 1);

HTH

Regards, ```
```
-Keith
http://keithreinfeld.home.comcast.net

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
```