rodrigues_vector_rotation
rodrigues_vector_rotation - rotate a 3D vector around another
Rotate vector v around (unit) vector k by theta_rad following the right hand rule.
Vector k will be made a unit vector internally. So its length is irrelevant as long a its greater than 0.
This function is vectorized:
- v can be a 3xN matrix of N vectors that are each rotated around k.
*OR*
- theta_rad can be a vector of N angles.
In either case the output will be 3xN matrix.
Example:
k=[-1;-1;1];
k=k(:)/norm(k);
v=[k(1:2);0];
theta_rads=0:pi/90:(2*pi);
vr = qx.rodrigues_vector_rotation(v,k,theta_rads);
oo=zeros(size(theta_rads));
quiver3(0,0,0,k(1),k(2),k(3),'r','LineWidth',2);
hold on
quiver3(oo,oo,oo,vr(1,:),vr(2,:),vr(3,:));
axis equal
rotate3d('on')
Reference: https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
Note: the vectorization for multiple vectors is not a true vectorization, internally a for-loop is used. If you, dear reader, can manage do this without one please let me know how.
Citar como
Duijnhouwer (2025). rodrigues_vector_rotation (https://www.mathworks.com/matlabcentral/fileexchange/74970-rodrigues_vector_rotation), MATLAB Central File Exchange. Recuperado .
Compatibilidad con la versión de MATLAB
Compatibilidad con las plataformas
Windows macOS LinuxEtiquetas
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Descubra Live Editor
Cree scripts con código, salida y texto formateado en un documento ejecutable.