当前位置:文档之家› 二次贝塞尔曲线算法

二次贝塞尔曲线算法



PointF pt = new PointF[3];//设置三个点,自己设值
pt[0] =new PointF(100f,200f)
pt[1] = new PointF(200f,300f)
pt[2] =new PointF(100f,500f)



以下为固定算法。只有steps 是可以设置的。这个是要分成多少段。。。一般设为5就可以。
int steps = 5;
PointF[] newPointF = new PointF[steps +1];
float tStep = 1 / ((float)steps);
float t = 0f;
for (int ik = 0; ik <= steps; ik++)
{
float x = CalculateQuadSpline(pt[0].X, pt[1].X, pt[2].X, t);
float y = CalculateQuadSpline(pt[0].Y, pt[1].Y, pt[2].Y, t);
newPointF[ik] = new PointF(x, y);
t = t + tStep;
}


、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

private float CalculateQuadSpline(float z0, float z1, float z2, float t)
{
float a1=(float)((1.0 - t) * (1.0 - t) * z0);
float a2=(float)(2.0 * t*(1-t) * z1);
float a3=(float) (t * t * z2);
float a4 = a1 + a2 + a3;
return a4;
}

相关主题
文本预览
相关文档 最新文档