c# - 三次贝塞尔曲线问题

标签 c# .net bezier

我正在尝试使用 this wikipedia article. 中使用的公式来优化贝塞尔曲线实现。我现在的实现速度非常慢,但至少应该是准确的。使用以下内容:

p0 = (0, 256) //Violet dot
p1 = (70, 223) //Green dot
p2 = (24, 472) //Blue dot
p3 = (255, 256) //Yellow dot
t = 0.5

用下面我当前的代码绘制,T = 0.5 处的点是 (67.125, 324.625)

enter image description here

尝试 X 轴的公式,我进行如下计算:

var x = Math.Pow(1 - t, 3) * p0.X + 3 * Math.Pow(1 - t, 2) * t * p1.X + 3 
        * (1 - t) * Math.Pow(t, 2) * p2.X + Math.Pow(t, 3) + p3.X;

但这给我的 X 坐标为 290.375,这显然是不正确的。我在这里缺少什么?

最佳答案

呃!现在看看我自己的问题,我看到了显而易见的事实。最后一位 Math.Pow(t, 3) + p3.X;应该是 Math.Pow(t, 3) * p3.X;。现在可以了。

关于c# - 三次贝塞尔曲线问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126308/

相关文章:

c# - 读取行并保留 xml 文件中的空格

c# - 我怎样才能真正执行这个?

c# - 使用 <%# isChecked %> 表达式设置复选框

c# - 在任何情况下,在 ReaderWriterLockSlim 上调用 EnterWriteLock 应该进入读锁吗?

c# - 为什么我在打开连接时收到 "Invalid attempt to call HasRows when reader is closed"?

algorithm - 如何阻止贝塞尔样条曲线超出坐标轴?

c# - 在 C# 的控制台应用程序中打印从 1 到 1000 的数字

c# - 使用 LINQ 查询现有的 ListView 项

android - 在android中将文本包裹在贝塞尔曲线之外

c# - Windows Phone 7 : How to parse Bezier Path string like in XAML?