Efficient Vector Rotation Matrix Routine

버전 1.1.0.0 (33.5 KB) 작성자: Darin Koblick
Efficient Method to Determine a Matrix Needed to Rotate One Vector to Another
다운로드 수: 603
업데이트 날짜: 2014/4/23

라이선스 보기

Suppose you have a unit vector described by f = [ai bj ck] and you would like to rotate f such that its result is t = [di ej fk]. This routine will find R(f,t) such that R(f,t)*f’ = t’. Where R(f,t) is known as the 3 x 3 transformation matrix needed to rotate f into t.
This MATLAB routine was based on a published article titled “Efficiently Building a Matrix to Rotate One Vector to Another” written by Tomas Moller and John Hughes in 1999.

This method features no square roots or trigonometric function calls and is reported to be faster than any other vector rotation matrix method tested by Moller and Hughes. In fact, the Goldman method (fastest method tested) was 50% slower than this routine in conversion speed tests.

Working Example:

Unit Vector f:
>> f = rand(1,3);
>> f = f./norm(f);

Unit Vector t:
>> t = rand(1,3);
>> t = t./norm(t);

The transformation matrix R(f,t) is found:
>> R = vecRotMat(f,t);

Now, test that R*f’= t’
>> R*f’

인용 양식

Darin Koblick (2024). Efficient Vector Rotation Matrix Routine (https://www.mathworks.com/matlabcentral/fileexchange/37597-efficient-vector-rotation-matrix-routine), MATLAB Central File Exchange. 검색됨 .

MATLAB 릴리스 호환 정보
개발 환경: R2012a
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
카테고리
Help CenterMATLAB Answers에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
버전 게시됨 릴리스 정보
1.1.0.0

Added robustness to parallel vector check. Added extra check to account for vectors that are parallel and have two or more identical values. Rotation error was found to be on the order of 1e-15.

1.0.0.0