1

是否有一个有效的公式来使用变量 Xrotation Z 旋转和 Yrotation 作为输入在三维空间中映射一个四维点?

我特别需要临时语言,但任何其他语言都适合。

4

1 回答 1

1

您可能正在谈论的四维旋转称为四元数。当谈论在 3D 空间中围绕每个轴旋转时,我们称之为欧拉角。维基百科关于这些转换的页面,其中包括这个 python 源:

class Quaternion_toEulerianAngle():
    def __init__(self, x, y, z, w):
        self.x = x
        self.y = y
        self.z = z
        self.w = w

    def X(self):
        ysqr = self.y*self.y

        t0 = +2.0 * (self.w * self.x + self.y*self.z)
        t1 = +1.0 - 2.0 * (self.x*self.x + ysqr)
        X = math.degrees(math.atan2(t0, t1))

        return X

    def Y(self):
        ysqr = self.y*self.y

        t2 = +2.0 * (self.w*self.y - self.z*self.x)
        t2 =  1 if t2 > 1 else t2
        t2 = -1 if t2 < -1 else t2
        Y = math.degrees(math.asin(t2))

        return Y

    def Z(self):
        ysqr = self.y*self.y

        t3 = +2.0 * (self.w * self.z + self.x*self.y)
        t4 = +1.0 - 2.0 * (ysqr + self.z*self.z)
        Z = math.degrees(math.atan2(t3, t4))

        return Z
于 2017-07-25T05:09:25.993 回答