天天看點

貝塞爾曲線軌迹計算公式util

package com.imooc.beziertest;

import android.graphics.PointF;

public class BezierUtil {

    public static PointF CalculateBezierPointForQuadratic(float t, PointF p0, PointF p1, PointF p2) {

        PointF point = new PointF();

        float temp = 1 - t;

        point.x = temp * temp * p0.x + 2 * t * temp * p1.x + t * t * p2.x;

        point.y = temp * temp * p0.y + 2 * t * temp * p1.y + t * t * p2.y;

        return point;

    }

    public static PointF CalculateBezierPointForCubic(float t, PointF p0, PointF p1, PointF p2, PointF p3) {

        PointF point = new PointF();

        float temp = 1 - t;

        point.x = p0.x * temp * temp * temp + 3 * p1.x * t * temp * temp + 3 * p2.x * t * t * temp + p3.x * t * t * t;

        point.y = p0.y * temp * temp * temp + 3 * p1.y * t * temp * temp + 3 * p2.y * t * t * temp + p3.y * t * t * t;

        return point;

    }

}

繼續閱讀