在 3D space 中,如何计算某个高度处的点,该点与其他 2 个已知点呈线性关系?
In 3D space, how do I calculate a point at a certain height, that is linear with 2 other known points?
背景
我正在开发一款 3d 游戏,我需要将我的鼠标输入转移到 3d 世界中的特定高度,以便我可以在表面上移动一个单位。
这是从倾斜相机(倾斜 45 度)的角度完成的。 playcanvas API 为我的相机提供了一个功能,它可以使用设定的深度将我在 2d 屏幕上的鼠标输入转换为 3d 世界。
当我将深度设置为 0 时,我得到相机的精确坐标(在本例中为 (0,80,80),如果我将深度设置为 100,我得到 ~(0.09, 11.52, 7.06)...
我需要一种方法来计算出两点之间的线达到高度(y 轴 2)的坐标,或者我可以找到一种方法来计算我需要为相机提供的深度为了找回我需要的坐标
这导致我:
我在 3d 中有 2 个坐标 space:假设 p1(0, 80, 80) 和 p2(0.09, 11.52, 7.06)。
我想知道如何计算第 3 个点,其中 y = 2。这个点应该与其他 2 个点对齐。
对我如何实现这一点有什么建议吗?我正在寻找一个计算量尽可能少的解决方案。
一种方法是编写一系列方程,描述 space 中与 p1 和 p2 共线的所有点。
x = x1*t + x2*(1-t)
y = y1*t + y2*(1-t)
z = z1*t + z2*(1-t)
... 其中x1,y1,z1为p1的坐标,p2同上,t
为任意实数。
我们可以通过求解t
来找到我们特别想要的点的坐标。我们知道 y = 2,所以我们将重新排列该等式。
y = y1*t +y2 - y2*t
y - y2 = y1*t - y2*t
y - y2 = (y1 - y2)*t
(y - y2) / (y1 - y2) = t
t = (y - y2) / (y1 - y2)
现在您知道了 t,您可以将其代入剩下的两个方程式以获得 x 和 z 值。
背景
我正在开发一款 3d 游戏,我需要将我的鼠标输入转移到 3d 世界中的特定高度,以便我可以在表面上移动一个单位。
这是从倾斜相机(倾斜 45 度)的角度完成的。 playcanvas API 为我的相机提供了一个功能,它可以使用设定的深度将我在 2d 屏幕上的鼠标输入转换为 3d 世界。
当我将深度设置为 0 时,我得到相机的精确坐标(在本例中为 (0,80,80),如果我将深度设置为 100,我得到 ~(0.09, 11.52, 7.06)...
我需要一种方法来计算出两点之间的线达到高度(y 轴 2)的坐标,或者我可以找到一种方法来计算我需要为相机提供的深度为了找回我需要的坐标
这导致我:
我在 3d 中有 2 个坐标 space:假设 p1(0, 80, 80) 和 p2(0.09, 11.52, 7.06)。
我想知道如何计算第 3 个点,其中 y = 2。这个点应该与其他 2 个点对齐。
对我如何实现这一点有什么建议吗?我正在寻找一个计算量尽可能少的解决方案。
一种方法是编写一系列方程,描述 space 中与 p1 和 p2 共线的所有点。
x = x1*t + x2*(1-t)
y = y1*t + y2*(1-t)
z = z1*t + z2*(1-t)
... 其中x1,y1,z1为p1的坐标,p2同上,t
为任意实数。
我们可以通过求解t
来找到我们特别想要的点的坐标。我们知道 y = 2,所以我们将重新排列该等式。
y = y1*t +y2 - y2*t
y - y2 = y1*t - y2*t
y - y2 = (y1 - y2)*t
(y - y2) / (y1 - y2) = t
t = (y - y2) / (y1 - y2)
现在您知道了 t,您可以将其代入剩下的两个方程式以获得 x 和 z 值。