/// <summary>
/// 获取Bezier近似的点数组 Calculate Bezier line segments
/// </summary>
/// <param name="controlPoints">Bezier曲线控制点数组</param>
/// <param name="outputSegmentCount">输出曲线段数量</param>
/// <returns>近似的点数组</returns>
public static Point[] GetBezierApproximation(Point[] controlPoints, int outputSegmentCount)
{
if (UseLegacyBezier)
return GetBezierApproximationOld(controlPoints, outputSegmentCount);
else
return BezierTools.FlattenTo(controlPoints, .2 / scaledError).ToArray();
}
private static Point[] GetBezierApproximationOld(Point[] controlPoints, int outputSegmentCount)
{
Point[] points = new Point[outputSegmentCount + 1];
for (int i = 0; i <= outputSegmentCount; i++)
{
double t = (double)i / outputSegmentCount;
points[i] = GetBezierPoint(t, controlPoints, 0, controlPoints.Length);
}
return points;
}
private static Point GetBezierPoint(double t, Point[] controlPoints, int index, int count)
{
if (count == 1)
return controlPoints[index];
var P0 = GetBezierPoint(t, controlPoints, index, count - 1);
var P1 = GetBezierPoint(t, controlPoints, index + 1, count - 1);
double x = (1 - t) * P0.X + t * P1.X;
return new Point(x, (1 - t) * P0.Y + t * P1.Y);
}
C#获取Bezier曲线拆分点数组
原创
©著作权归作者所有:来自51CTO博客作者山可可的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android中使用Bezier曲线
import and
Math i++ .net -
C#曲线---------ADC
C#
c# 学习 -
Android bezier 曲线动画 bezier曲线代码
Bezier曲线原理及实现代码(c++) 一、原理: 贝塞尔曲线于1962年,由法国工程师皮埃尔?贝塞尔(Pierre B?zier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由 Paul de Cas
Android bezier 曲线动画 贝塞尔曲线 #include 样条 -
n次bezier曲线 python 四次bezier曲线n次bezier曲线 python 控制顶点 递推 角点
-
python贝塞尔拟合曲线 python bezier曲线
关于Bezier曲线的相关推导有关的基础知识和背景介绍,大家可以参考 贝塞尔曲线简单介绍_xiaozhangcsdn的博客-CSDN博客blog.csdn.net 这篇文章,这里不多做介绍了,本文只是完成对于相关公式的推导和证明,以及具体的代码实现。首先回忆一次Bezier曲线公式: 设 是平面的任意两点,则 两点连线的参数方程可表示为:
python贝塞尔拟合曲线 nurbs曲线递推代码 取得贝塞尔曲线x坐标的y值 贝塞尔曲线 递推公式