Math 利用三维三角法计算距离
我有点糊涂——我不知道什么应该是一个相当小的触发问题 给定笛卡尔坐标(x,y,z),我想在给定方向(x,y和z角)和行驶距离的情况下确定一个新坐标Math 利用三维三角法计算距离,math,3d,trigonometry,Math,3d,Trigonometry,我有点糊涂——我不知道什么应该是一个相当小的触发问题 给定笛卡尔坐标(x,y,z),我想在给定方向(x,y和z角)和行驶距离的情况下确定一个新坐标 class Cartesian() { int x = 0; int y = 0; int z = 0; int move (int distance, int x_angle, int y_angle, int z_angle) { x += distance * //some trig here y += dist
class Cartesian() {
int x = 0;
int y = 0;
int z = 0;
int move (int distance, int x_angle, int y_angle, int z_angle) {
x += distance * //some trig here
y += distance * //some trig here
z += distance * //some trig here
}
}
也就是说,我想在给定的方向上从原点移动给定的距离,并且需要新位置的坐标
这实际上是针对JavaScript应用程序的,但我只需要一些伪代码来帮助我
谢谢你陈述问题的方式,看来“方向余弦”最有意义 假设
x_角
是目标方向和x轴之间的弧度角
安讯士等:
dc_x = cos(x_angle);
dc_y = cos(y_angle);
dc_z = cos(z_angle);
delta_x = dc_x * distance;
delta_y = dc_y * distance;
delta_z = dc_z * distance;
x += delta_x;
y += delta_y;
z += delta_z;
如何测量X、Y和Z角?它们相对于什么?呃,以度为单位测量,相对于各自的轴。这就是你的意思吗?也许我应该更清楚一点,称为x_方向变量x_角度等。因此,行驶的距离肯定会大于无定向距离。例如:取距离=2,x_角=10,y_角=20,z_角=60,然后sqrt(δx^2+δy^2+δz^2)=2.90…>2@foodwagon:三个角度只有两个自由度:它们必须遵守dc_x^2+dc_y^2+dc_z^2=1的约束。因此(x_角,y_角,z_角)=(10度,20度,30度)不是一组有效的方向角。尝试一些满足约束条件的角度,你会发现它是有效的。“两个自由度”-这是我无法理解的。我想我知道了,干杯!OP现在似乎理解了这个问题,我怀疑它的初衷是让x_a,y_a和z_a成为欧拉角,而不是方向余弦。在这种情况下,需要一个不同的方程式(DCM乘法mayb?)。此外,如果我的假设是正确的,那么z_角实际上是多余的,因为正如您在评论中提到的,只有两个自由度可用。