Skip to content
Snippets Groups Projects
Commit 644e1b9d authored by Nicola Vigano's avatar Nicola Vigano
Browse files

gtMathsCross: added other possible directions for cross product

parent ce52a669
No related branches found
No related tags found
No related merge requests found
function res = gtMathsCross(vec1, vec2)
function res = gtMathsCross(vec1, vec2, dim)
% FUNCTION res = gtMathsCross(vec1, vec2)
%
% Computes the cross product of vectors 1 and 2.
......@@ -8,7 +8,21 @@ function res = gtMathsCross(vec1, vec2)
% Can be 1 order of magnitude faster than MATLAB's cross built-in function.
%
res = [ vec1(:, 2) .* vec2(:, 3) - vec1(:, 3) .* vec2(:, 2), ...
vec1(:, 3) .* vec2(:, 1) - vec1(:, 1) .* vec2(:, 3), ...
vec1(:, 1) .* vec2(:, 2) - vec1(:, 2) .* vec2(:, 1) ];
if (~exist('dim', 'var') || isempty(dim))
dim = 2;
end
switch (dim)
case 1
res = [ vec1(2, :, :) .* vec2(3, :, :) - vec1(3, :, :) .* vec2(2, :, :), ...
vec1(3, :, :) .* vec2(1, :, :) - vec1(1, :, :) .* vec2(3, :, :), ...
vec1(1, :, :) .* vec2(2, :, :) - vec1(2, :, :) .* vec2(1, :, :) ];
case 2
res = [ vec1(:, 2, :) .* vec2(:, 3, :) - vec1(:, 3, :) .* vec2(:, 2, :), ...
vec1(:, 3, :) .* vec2(:, 1, :) - vec1(:, 1, :) .* vec2(:, 3, :), ...
vec1(:, 1, :) .* vec2(:, 2, :) - vec1(:, 2, :) .* vec2(:, 1, :) ];
case 3
res = [ 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment