2017-03-16 10 views

답변

1

아마 당신이 말하는 4 차원 회전을 quaternion이라고합니다. 3D 공간에서 각 축을 중심으로 회전하는 것을 말하면 오일러 각을 호출합니다. 이 파이썬 소스를 포함하는 이러한 변환에 관한 위키 백과 has page

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