<a href="http://s3.51cto.com/wyfs02/M01/5B/2C/wKioL1UBUsDCLiziAAGszw_q37c944.gif" target="_blank"></a>
/**
* 計算塞貝兒曲線
*
* @param t 時間,範圍0-1
* @param s 起始點
* @param c1 拐點1
* @param c2 拐點2
* @param e 終點
* @return 塞貝兒曲線在目前時間下的點
*/
private Point CalculateBezierPoint( float t, Point s, Point c1, Point c2, Point e )
{
float u = 1 - t;
float tt = t * t;
float uu = u * u;
float uuu = uu * u;
float ttt = tt * t;
Point p = new Point((int) (s.x * uuu), (int) (s.y * uuu));
p.x += 3 * uu * t * c1.x;
p.y += 3 * uu * t * c1.y;
p.x += 3 * u * tt * c2.x;
p.y += 3 * u * tt * c2.y;
p.x += ttt * e.x;
p.y += ttt * e.y;
return p;
}
<a href="http://down.51cto.com/data/2365492" target="_blank">附件:http://down.51cto.com/data/2365492</a>
本文轉自 zl1030 51CTO部落格,原文連結:http://blog.51cto.com/zl1030/1619762