wKioL1UBUsDCLiziAAGszw_q37c944.gif


    /**
     * 计算塞贝儿曲线
     * 
     * @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;
    }