X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fnurbs-1.3.6%2Fveccross.m;fp=octave_packages%2Fnurbs-1.3.6%2Fveccross.m;h=877c0fa47fd539423ed105b8d3f3eb1ac6cffbb8;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/nurbs-1.3.6/veccross.m b/octave_packages/nurbs-1.3.6/veccross.m new file mode 100644 index 0000000..877c0fa --- /dev/null +++ b/octave_packages/nurbs-1.3.6/veccross.m @@ -0,0 +1,59 @@ +function cross = veccross(vec1,vec2) +% +% VECCROSS: The cross product of two vectors. +% +% Calling Sequence: +% +% cross = veccross(vec1,vec2); +% +% INPUT: +% +% vec1 : An array of column vectors represented by a matrix of +% vec2 size (dim,nv), where is the dimension of the vector and +% nv the number of vectors. +% +% OUTPUT: +% +% cross : Array of column vectors, each element is corresponding +% to the cross product of the respective components in vec1 +% and vec2. +% +% Description: +% +% Cross product of two vectors. +% +% Examples: +% +% Determine the cross products of: +% (2.3,3.4,5.6) and (1.2,4.5,1.2) +% (5.1,0.0,2.3) and (2.5,3.2,4.0) +% +% cross = veccross([2.3 5.1; 3.4 0.0; 5.6 2.3],[1.2 2.5; 4.5 3.2; 1.2 4.0]); +% +% Copyright (C) 2000 Mark Spink +% +% 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 . + +if size(vec1,1) == 2 + % 2D vector + cross = zeros(size(vec1)); + cross(3,:) = vec1(1,:).*vec2(2,:)-vec1(2,:).*vec2(1,:); +else + % 3D vector + cross = [vec1(2,:).*vec2(3,:)-vec1(3,:).*vec2(2,:); + vec1(3,:).*vec2(1,:)-vec1(1,:).*vec2(3,:); + vec1(1,:).*vec2(2,:)-vec1(2,:).*vec2(1,:)]; +end + +end