从3d空间中的点和方向获得第二个点

时间:2018-02-13 06:26:39

标签: javascript math

我有一点意见:

x1 = 100;
z1 = 100;
y1 = 100;

和2个方向:

xDir = Math.PI;
yDir = 0.11;

范围:

range = 100;

如何根据此信息构建光线时计算终点。我尝试过以下方法:

x2 = x1 + (range * Math.cos(xDir))
z2 = z1 + (range * Math.sin(xDir))
y2 = y1 + (range * Math.cos(yDir))

但是当光线指向任何地方但处于完美的水平方向时,这并不起作用。因为我不会在前两行考虑yDir。如何找到正确的终点?

1 个答案:

答案 0 :(得分:0)

似乎你想在spherical coordinate system中使用方位角/倾斜角(特定系统 - 使用OXZ赤道平面)。

在这种情况下,您需要在使用X / Z时考虑Y:

x2 = x1 + (range * Math.cos(xDir) * Math.sin(yDir))
z2 = z1 + (range * Math.sin(xDir) * Math.sin(yDir))
y2 = y1 + (range * Math.cos(yDir))