%% Copyright (c) 2011, INRA %% 2007-2011, David Legland %% 2011 Adapted to Octave by Juan Pablo Carbajal %% %% All rights reserved. %% (simplified BSD License) %% %% Redistribution and use in source and binary forms, with or without %% modification, are permitted provided that the following conditions are met: %% %% 1. Redistributions of source code must retain the above copyright notice, this %% list of conditions and the following disclaimer. %% %% 2. Redistributions in binary form must reproduce the above copyright notice, %% this list of conditions and the following disclaimer in the documentation %% and/or other materials provided with the distribution. %% %% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" %% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE %% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE %% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE %% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR %% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF %% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS %% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN %% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) %% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE %% POSSIBILITY OF SUCH DAMAGE. %% %% The views and conclusions contained in the software and documentation are %% those of the authors and should not be interpreted as representing official %% policies, either expressed or implied, of copyright holder. %% -*- texinfo -*- %% @deftypefn {Function File} {@var{vr} = } rotateVector (@var{v}, @var{theta}) %% Rotate a vector by a given angle %% %% Rotate the vector @var{v} by an angle @var{theta}, given in radians. %% %% Example %% %% @example %% rotateVector([1 0], pi/2) %% ans = %% 0 1 %% @end example %% %% @seealso{vectors2d, transformVector, createRotation} %% @end deftypefn function vr = rotateVector(v, angle) % precomputes angles cot = cos(angle); sit = sin(angle); % compute rotated coordinates vr = [cot * v(:,1) - sit * v(:,2) , sit * v(:,1) + cot * v(:,2)]; endfunction %!assert ([0 1],rotateVector([1 0],pi/2), 1e-6) %!assert (sqrt([0.5 0.5]),rotateVector([1 0],pi/4), 1e-6)