1

我能找到的唯一计算公式涉及t范围 [0, 1],但我不知道走完整条路径需要多长时间,所以我无法计算(1 - t)

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

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

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

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

4

2 回答 2

2

我认为这里有一个误解。三次贝塞尔曲线定义中的“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 值评估曲线上的位置。它与走完整条路径所需的时间无关。

于 2014-11-26T07:07:33.017 回答
1

你有给定的曲线,你有你的速度。要计算您要求的内容,您需要将总距离除以给定时间的行驶速度。这将为您提供所需的参数 (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;

在此处输入图像描述

于 2015-03-13T03:33:57.177 回答