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

问题描述 投票:0回答:2

我能找到的计算这个的唯一方程涉及 [0, 1] 范围内的

t
,但我不知道走完整条路径需要多长时间,所以我无法计算
(1 - t)

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

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

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

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

t
.

范围的方程式
math bezier cubic-spline
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 值评估曲线上的位置。它与走完整条路径所需的时间无关。


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;

© www.soinside.com 2019 - 2024. All rights reserved.