Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 活泼的B&xE9;齐尔曲线_C#_Math_Interpolation_Shapes_Bezier - Fatal编程技术网

C# 活泼的B&xE9;齐尔曲线

C# 活泼的B&xE9;齐尔曲线,c#,math,interpolation,shapes,bezier,C#,Math,Interpolation,Shapes,Bezier,Bézier曲线上的控制点越多,曲线到达的任何给定控制点的距离就越小 例如,2点(直线)曲线到达两个控制点。一条三点(二次)曲线在三点之间形成一条圆弧,这对我来说非常理想,它不完全沿着直线,因为那样它就不会是曲线,但是控制点和直线之间有很强的视觉关系 对于4点(三次)曲线,控制点呈之字形,但合成线更直。扩展到以之字形使用100个控制点,曲线几乎完全笔直 继续使用Z字形示例,形成我正在寻找的曲线的一种方法是将形状分解为许多小的3点Bézier曲线,在端点处在它们之间进行插值。在本例中,该曲线看起来

Bézier曲线上的控制点越多,曲线到达的任何给定控制点的距离就越小

例如,2点(直线)曲线到达两个控制点。一条三点(二次)曲线在三点之间形成一条圆弧,这对我来说非常理想,它不完全沿着直线,因为那样它就不会是曲线,但是控制点和直线之间有很强的视觉关系

对于4点(三次)曲线,控制点呈之字形,但合成线更直。扩展到以之字形使用100个控制点,曲线几乎完全笔直

继续使用Z字形示例,形成我正在寻找的曲线的一种方法是将形状分解为许多小的3点Bézier曲线,在端点处在它们之间进行插值。在本例中,该曲线看起来不像100个控制点Bézier曲线所产生的平滑程度较低的Z字形


有没有C#、伪代码或者更简单的形式的更多信息可以用来完成这项更复杂的贝塞尔曲线相关任务?

非常容易实现的一点是使用二次贝塞尔圆弧构建曲线

基本上使用源顶点之间的中点作为每个圆弧的起点/终点,并使用源顶点作为圆弧的控制点。此选择可确保切线的连续性,并对曲线形状保留大量控制


另外,通过使用两个具有相同坐标的连续源顶点,您可以轻松获得锐角。

-关于贝塞尔曲线的构造有一个非常好的解释。只要看看不同的曲线顺序被应用的部分,我就知道问题出在哪里了。以下两个示例都具有较高的曲线阶数,并且在这两种情况下,直线的跟随不太精确,曲线与通过连接曲线控制点而形成的直线的距离太远。这对于低阶曲线来说不是什么问题,但是它们是控制点太少的简单曲线。