gpt4 book ai didi

python - 矩阵到四元数和返回不给出相同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:14 25 4
gpt4 key购买 nike

我正在将矩阵 (M) 转换为四元数,这样我就可以在我需要自己制作视频帧的地方,在两个不同的变换矩阵之间插入平滑的图像动画。

当我从四元数转换回矩阵作为测试时,这个新矩阵与成为四元数的矩阵相去甚远。

import numpy as np
from transforms3d import quaternions

M = np.array([[ 0.757403109, -0.186744161, 145.541734],
[ -0.154492906, 0.626185286, 100.878814],
[ -0.000294826495, -0.000344726091, 1.00000000]])


quat = quaternions.mat2quat(M)


testM = quaternions.quat2mat(quat)
print("TEST: M original")
print(M)
print("TEST: quat back to mat (testM)")
print(testM)
print("Why not the same")
print ("quat")
print(quat)
print("quat of testM")
print(quaternions.mat2quat(testM))

#Scaling gives same result, scale M to be -1. to 1
mmax = np.amax(M)
scaleTestM = M / mmax
print("M Scaled")
print(scaleTestM)
quatOfScaled = quaternions.mat2quat(scaleTestM)
print("Quat of scaled")
print(quaternions.quat2mat(quatOfScaled))

我是否遗漏了四元数实际可以表示的某些内容,或者代码有误?如果这行不通,欢迎提出有关如何在两个转换矩阵之间平滑移动的其他建议。

python 3.6

控制台输出是这样的:

    TEST: M original
[[ 7.57403109e-01 -1.86744161e-01 1.45541734e+02]
[ -1.54492906e-01 6.26185286e-01 1.00878814e+02]
[ -2.94826495e-04 -3.44726091e-04 1.00000000e+00]]
TEST: quat back to mat (testM)
[[ 0.38627453 -0.42005089 0.8211877 ]
[-0.54462197 0.61466344 0.57059247]
[-0.74443193 -0.6676422 0.00865989]]
Why not the same
quat
[ 0.70880143 -0.43673539 0.55220671 -0.04393723]
quat of testM
[ 0.70880143 -0.43673539 0.55220671 -0.04393723]
M Scaled
[[ 5.20402697e-03 -1.28309699e-03 1.00000000e+00]
[ -1.06150244e-03 4.30244486e-03 6.93126372e-01]
[ -2.02571789e-06 -2.36857210e-06 6.87088145e-03]]
Quat of scaled
[[ 0.38627453 -0.42005089 0.8211877 ]
[-0.54462197 0.61466344 0.57059247]
[-0.74443193 -0.6676422 0.00865989]]

最佳答案

对于给定的四元数,存在多种矩阵表示形式。当您将矩阵转换为四元数时,有关您最初使用这些表示的信息会丢失。

参见例如https://en.wikipedia.org/wiki/Quaternion 中的矩阵表示

关于python - 矩阵到四元数和返回不给出相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762898/

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