位置(t)在三次贝塞尔曲线上

时间:2014-11-26 04:30:57

标签: math bezier cubic-spline

我能找到的唯一计算这个的方程涉及[0,1]范围内的t,但我不知道在整个路径上走多长时间,所以我可以' t计算(1 - t)

我知道我旅行的速度,但预先计算总时间似乎是一个沉重的想法(我实际上也不知道如何进行计算)。什么是在不知道总时间的情况下计算出位置的等式?

编辑为了澄清三次贝塞尔曲线:我有四个控制点(P0到P1),并且为了在曲线上得到一个t值,我需要使用这四个点:

B(t) = (1-t)^3P0 + 3t(1-t)^2P1 + 3t^2(1-t)P2 + t^3P3

我没有使用参数方程来定义曲线。控制点是定义曲线的原因。我需要的是一个方程式,不需要知道t的范围。

2 个答案:

答案 0 :(得分:1)

我认为这里存在误解。 ' t'在三次贝塞尔曲线的定义中没有提及时间'。它是x,y或甚至z基于的参数。与将y表示为x的函数的传统方式(例如y = f(x))不同,表示曲线的另一种方式是通过表示x,y和z的参数形式作为附加参数t,C的函数。 (t)=(x(t),y(t),z(t))。通常,t值的范围为0到1,但这不是必须的。圆的公共表示为x = cos(t)和y = sin(t)是参数表示的示例。因此,如果您具有曲线的参数化表示,则可以评估曲线上任何给定t值的位置。它与走完整条道路所需的时间无关。

答案 1 :(得分:0)

你有给定的曲线,你有你的速度。要计算您要求的内容,您需要将总距离除以您在该时间内行进的速度。这将为您提供所需的参数(t)。因此,如果总曲线的距离为72.2单位且速度为1单位,则t为1 / 72.2。

你唯一遗漏的是计算给定曲线的长度。这通常通过将其细分为足够小的线段来完成,您不必关心,然后将这些线段的总距离相加。如果你这么倾向,你也可以将这两个步骤结合起来。如果您有给定的速度,只需像曲线的第1000个那样进行迭代,在通过曲线的路径的起点和点1000之间添加线段,并从您需要行驶的距离中减去该线段(假设您有速度和时间,你需要去旅行的距离),并保持这种距离,直到你离开你需要去的地方为止。

t的范围介于0和1之间。

        x = (1-t)*(1-t)*(1-t)*p0x + 3*(1-t)*(1-t)*t*p1x + 3*(1-t)*t*t*p2x + t*t*t*p3x;
        y = (1-t)*(1-t)*(1-t)*p0y + 3*(1-t)*(1-t)*t*p1y + 3*(1-t)*t*t*p2y + t*t*t*p3y;

enter image description here