0

我有 2 个 3D 点 A 和 BI 现在假设参数方程如下:

x = Ax + (Bx*t)
y = Ay + (By*t)
z = Az + (Bz*t)

所以这可以细化为:

x = Ax + (Bx * ((y - Ay)/By));

是正确的。鉴于此,我想知道高度为 0 的点(AB 上)的坐标是什么。

所以我现在这样做:

float y = 0;
float t = ((y - Ay) / By)
float x = Ax + (Bx * t);
float z = Az + (Bz * t);

这在数学上有什么问题吗?(我的代码没有做应该发生的事情)

谢谢!

PS:这个问题与编程的相关性:在游戏引擎中,当将点(在这种情况下是我的视锥角)投影到平面上时,例如 y = 0 的 xz 平面,这个数学问题与我的游戏编程不谋而合

4

2 回答 2

2

我会这样写:

x = A*(1-t) + B*t

所以x(0) = Ax(1) = B。以这种方式编写它假设0 <= t <= +1.

另一种思考方式是假设-1 <= t <= +1。如果你这样做,形状函数看起来像这样:

x = A*(1-t)/2.0 + B*(1+t)/2.0

再一次x(-1) = Ax(+1) = B

并且很容易推广到高阶函数:

x(t) = A*t(t-1)/2 + C*(1-t^2) + B*t(t+1)/2

所以x(0) = A, x(0.5) = C, x(1) = B.

于 2013-09-20T09:25:02.050 回答
1

我认为你的参数化是错误的:

x = Ax + (Bx*t)
...

但它应该是:

x = Ax + ((Bx-Ax)*t)
...
于 2013-09-20T09:03:47.163 回答