【发布时间】:2017-11-21 05:14:14
【问题描述】:
我有一个问题是确定通过这些点的贝塞尔曲线:(1,1)、(2,-1)、(3,1)。我们怎样才能找到曲线?我不明白如何使用方程。又如何求曲线度数?
【问题讨论】:
-
我投票结束这个问题,因为它是关于几何和Mathematics,而不是编程或软件开发。
标签: geometry computational-geometry
我有一个问题是确定通过这些点的贝塞尔曲线:(1,1)、(2,-1)、(3,1)。我们怎样才能找到曲线?我不明白如何使用方程。又如何求曲线度数?
【问题讨论】:
标签: geometry computational-geometry
通过这些点有无穷多的贝塞尔曲线。你需要更具体。
例如,可以定义曲线是二次曲线,第一个点是起点 (t=0),第三个点是终点 (t=1),第二个点是正中间 (t=0.5)。 然后建立方程(代入t值和点坐标)并求解系数
p[0].x * (1-t)^2 + p[1].x * 2 * t * (1-t) + p[2].x * t^2 = X(t)
example for the first point:
p[0].x * (1-0)^2 + p[1].x * 2 * 0 * (1-0) + p[2].x * (0)^2 = 1
p[0].x = 2
【讨论】:
N次贝塞尔曲线是2D中N+1个控制点的加权和
Sum(i=0,N) Wi(t).Ci
如果你有 N+1 个点 Pj 的 t 值是已知的,你会得到一个由 2(N+1) 个未知数中的 2(N+1) 个方程组成的线性系统
Sum(I=0,N) Wi(tj).Ci = Pj
tj 可以在 [0,1] 中统一选择。另一种选择是使用控制点之间的累积线性距离(也减少到 [0,1])。
如果您不想自己提供 tj,那就另当别论了。然后,您可以降低曲线的度数,并针对 t 的值交易控制点。通常,方程和未知数的数量不匹配,系统会出现过定或欠定。
另一个困难是如果你强加点的顺序。那么未知数t被约束为增加,导致方程和不等式的困难系统。
【讨论】: