我正在尝试使用 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)
尝试 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/