2017-03-16 2 views

答えて

1

あなたがおそらく話している4次元回転はquaternionと呼ばれます。 3D空間で各軸の周りを回転することについて話すとき、オイラー角を呼び出します。これらのコンバージョンについてのウィキペディアhas pageは、この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 
関連する問題