package com.cmeiyuan.common;
import android.graphics.PointF;
/**
* @author 334388454@qq.com
*/
public class CurveHelper {
// 求A点到B点的三次贝塞尔曲线的两个控制点
public static void curve3(PointF a, PointF b, PointF l, PointF n, PointF[] controls) {
// 点a前一个点和点a的中点
PointF cLA = PointHelper.center(l, a);
// 点a和点b的中点
PointF cAB = PointHelper.center(a, b);
// 点b和点b后一个点的中点
PointF cBN = PointHelper.center(b, n);
// 点a前一个点到点a的距离
float lenLA = PointHelper.distance(l, a);
// 点a到点b的距离
float lenAB = PointHelper.distance(a, b);
// 点b到点b后一个点的距离
float lenBN = PointHelper.distance(b, n);
// cLA和cAB连线的比例点
PointF cLAB = PointHelper.percent(cLA, cAB, lenLA / (lenLA + lenAB));
PointF cABN = PointHelper.percent(cAB, cBN, lenAB / (lenAB + lenBN));
// 顶点a和顶点b的控制点1
controls[0] = PointHelper.translate(cAB, a.x - cLAB.x, a.y - cLAB.y);
// 顶点a和顶点b的控制点2
controls[1] = PointHelper.translate(cAB, b.x - cABN.x, b.y - cABN.y);
}
}