gpt4 book ai didi

rotation - 欧拉角旋转

转载 作者:行者123 更新时间:2023-12-03 06:28:34 26 4
gpt4 key购买 nike

从三维笛卡尔坐标中,对象 A 的坐标可以表示为 xyzwpr(绿色箭头)。而从对象A的坐标世界来看,对象B也可以表示为xyzwpr(蓝色箭头)。

那么谁能写出计算物体B相对于原始坐标系(红色箭头)的xyzwpr的C#代码吗?

假设 A 的坐标为 (30,50,70, -15,44,-80) B (60,90,110, 33,150,-90)。

假设旋转的顺序是 yaw(z)->itch(x)->roll(y)

rotation

--- 编辑 ---

任何人都可以验证以下假设吗?

假设 B 点的 xyz。

较小飞机 B 点的 xyz 可以通过将第一架飞机 A 点的 xyz 和 B 的 xyz 相加,然后将 A 的 wpr 的 3d 旋转应用到 A 的 xyz 上来计算。

执行此操作的顺序是;

1)将A点平移到原点(减去-Ax、-Ay、-Az平移的A)

2)绕原点旋转(可以使用A的3×3矩阵R0)

3) 然后翻译回来。 (添加A,由+Ax,+Ay,+Az翻译)

B点wpr的假设只是两点旋转的连续。 AwApArBwBpBr。

--- 已解决。一些带有详细解释和代码的引用资料 ---

Global frame-of-reference VS Local frame-of-reference

3D matrix rotation about an arbitrary point

Euler to matrix conversion

最佳答案

这个问题有一些问题。

首先,我认为直接请求代码并不是一个好的做法。相反,显示您尝试过的代码,询问代码中的错误,或者更好的方法,或者可能对您有帮助的库。

我建议重新表述你的问题。现在看起来就像“有人可以帮我做作业吗?”。

您面临什么问题?也许您不想实现矩阵乘法,并且想了解已经实现矩阵乘法的库,或者您不知道如何调用 atan2。

一旦你获得了矩阵乘法、平移矩阵构建、旋转矩阵构建和atan2(由你自己或库制作),你只需要(伪代码):

Matrix c = a;
Matrix yaw, pitch, roll;
Matrix pos;

buildTranslationMatrix(pos, x, y, z);
buildRotationZMatrix(yaw, w);
buildRotationXMatrix(pitch, p);
buildRotationYMatrix(roll, r);

mult (c, c, pos); //c = c*pos

mult (c, c, yaw); //c = c*yaw
mult (c, c, pitch);
mult (c, c, roll);

decomposePos(c, x, y, z); // obtain final xyz from c
decomposeAngles(c, w, p, r); // obtain final wpr from c

注意后乘法。

希望我提出了建设性的批评。 :)

编辑

第二个假设是正确的。

也许我误解了第一个,但我认为这是错误的。由于我更习惯于变换矩阵而不是欧拉角(并且您指出了该链接),所以我这样理解:

为了获得 xyz(以及 wpr),我将计算包含所有值的变换矩阵。最终第二平面的变换矩阵在原坐标系下的计算公式为:

M = TA * RA * TB * RB

(TA是平面A的平移矩阵,RA是它的旋转矩阵)

变换矩阵可以这样理解:

    r r r t
r r r t
M = r r r t
s s s w

我们只关心旋转和平移。如果乘以 TA*RA:

1 0 0 x   r r r 0   r r r x
0 1 0 y r r r 0 r r r y
0 0 1 z * r r r 0 = r r r z
0 0 0 1 0 0 0 1 0 0 0 1

这就是我们理解 A 坐标系的方式。记住,这意味着首先旋转,就像它在原点一样,然后平移到位置 x、y、z。后乘意味着内部变换,即移动坐标系中的变换。因此,如果我们继续后乘,我们将合成最终的变换矩阵。

此外,矩阵是结合的,所以

M = (TA * RA) * (TB * RB)

相同
M = ((TA * RA) * TB) * RB

重述

xyz 将位于 M 的最后一列,而 wpr 必须从 M 的 3*3 子矩阵分解。

关于rotation - 欧拉角旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com