天天看點

偶然發現的一個貝賽爾曲線繪制算法

<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

繼續閱讀