/usr/share/octave/packages/nurbs-1.3.7/veccross.m is in octave-nurbs 1.3.7-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 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 3 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 <http://www.gnu.org/licenses/>.
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
|