X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnurbs-1.3.6%2Fvecrot.m;fp=octave_packages%2Fnurbs-1.3.6%2Fvecrot.m;h=d8ed20d70a682016a56ab658e31ce27bf39e2440;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nurbs-1.3.6/vecrot.m b/octave_packages/nurbs-1.3.6/vecrot.m new file mode 100644 index 0000000..d8ed20d --- /dev/null +++ b/octave_packages/nurbs-1.3.6/vecrot.m @@ -0,0 +1,53 @@ +function rx = vecrot(angle, vector) +% +% VECROT: Transformation matrix for a rotation around the axis given by a vector. +% +% Calling Sequence: +% +% rx = vecrot (angle, vector); +% +% INPUT: +% +% angle : rotation angle defined in radians +% vector : vector defining the rotation axis +% +% OUTPUT: +% +% rx : (4x4) Transformation matrix. +% +% +% Description: +% +% Return the (4x4) Transformation matrix for a rotation about the x axis +% by the defined angle. +% +% See also: +% +% nrbtform +% +% Copyright (C) 2011 Rafael Vazquez +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 2 of the License, or +% (at your option) any later version. + +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + +% Normalize the vector +vec = vector / norm (vector); + +sn = sin (angle); +cn = cos (angle); +rx = [cn+vec(1)^2*(1-cn), vec(1)*vec(2)*(1-cn)-vec(3)*sn, vec(1)*vec(3)*(1-cn)+vec(2)*sn, 0; + vec(1)*vec(2)*(1-cn)+vec(3)*sn, cn+vec(2)^2*(1-cn), vec(2)*vec(3)*(1-cn)-vec(1)*sn, 0; + vec(1)*vec(3)*(1-cn)-vec(2)*sn, vec(2)*vec(3)*(1-cn)+vec(1)*sn, cn+vec(3)^2*(1-cn), 0; + 0 0 0 1]; + +end