gpt4 book ai didi

c++ - 将一个坐标系的旋转转换为另一个坐标系所需的矩阵

转载 作者:行者123 更新时间:2023-11-30 01:59:49 26 4
gpt4 key购买 nike

我在“自制”GL 坐标系中有旋转矩阵,并想将它们应用到 collada 坐标系。

我知道我需要一个矩阵来乘以 GL 旋转以将它们转换为 collada 坐标系(其中 Z 实际上是向上的)。坐标系如下图所示:

enter image description here

我需要从左系统到右系统的转换..为了更多的理解:
ColladaMatrix=GLRotMatrix*NeededMatrix

有人知道我需要的矩阵吗?

最佳答案

我认为您需要乘以两个矩阵来更改旋转矩阵的基础。

确实,ColladaMatrix 就是这样做的([col] 表示 collada 坐标,[gl] 表示 GL 坐标)

y[col] = R[col,col] x[col]

但如果要使用 GL 矩阵,则需要将 x[col] 转换为 GL 坐标,然后在 GL 基础上应用旋转,最后返回到 Collada 坐标。所以

y[col] = B[gl->col] R[gl,gl] B[col->gl] x[col]

所以,

R[col,col] = B[gl->col] R[gl,gl] B[col->gl]

这里B[gl->col]和B[col->gl]是一样的,所以

                  [1 0 0                  [1 0 0
MatrixCollada = 0 0 1 * MatrixGL * 0 0 1
0 1 0] 0 1 0]

希望对您有所帮助!

备注:矩阵对角化时也是如此(其实就是基的变化),需要对要对角化的矩阵进行预乘和后乘。

编辑:我为矩阵写了两个坐标系,因为一般来说,矩阵可以将 vector 从一个坐标系发送到另一个坐标系。这样就更清楚了。

关于c++ - 将一个坐标系的旋转转换为另一个坐标系所需的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787969/

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