2017-10-05 11 views
0

나는 원하는 회전 벡터를 지정하기 위해 두 점 중 하나를 사용합니다.Rodrigues 벡터에 상대적인 점 집합의 회전

예를 들어 보자 :

x1 = [1,1,1] 
x2 = [2,3,1] 

내 원하는 회전 벡터는 다음과 같습니다

x2 - x1 = [1,2,0] 

그때와 함께하는로드 리 게스의 회전에 의해이 회전을 기준으로 3D 일련의 점을 회전하는 것을 시도하고있다 내 운전 방식 존재 : vi 내 회전되지 않은 벡터이다

def rodriguesRotation(vi, k, theta): 
    # Accepts vector and returns rotated vector. 
    vRotated = (vi * cos(theta)) + ((np.cross(vi, k)) * sin(theta)) + (k * (np.dot(k, vi)) * (1 - cos(theta))) 
    return vRotated 

, k이 원하는 회전 벡터이고 theta이 내 오일러 회전 각도입니다. 그러나 이것은 이상한 결과를 만들어 내고 있습니다. 파이썬에서 제대로 작동하려면 단위 벡터를 지정해야하는지 잘 모르겠지만 작동하지 않는 이유는 단순히 내 k이 '포인트'이고 벡터가 아니야. 어떤 충고?

+0

쿼터니온 회전은 동일하며 많은 구현 예가 있습니다. – f5r5e5d

답변

0

상호 상품 용어가 반대입니다. 수식은 십자가 (k, vi)로 표시합니다.