help-octave
[Top][All Lists]

## Cross Product Results

 From: John W. Eaton Subject: Cross Product Results Date: Fri, 19 Sep 1997 17:02:05 -0500

```On 18-Sep-1997, Craig Earls <address@hidden> wrote:

| I noticed an interesting artifact that is probably very old.
| The cross product defin in OCTAVE-SHAR/m/linear-algebra/cross.m
| return singular matrix errors if parallel vectors are used. Since
| crossing vectors to find if they are parallel is not so uncommon,
| this is inconvenient.
|
| Is the tricky matrix determinant stuff done for speed, to keep all
| the addressing out of the interpreter?

I'm not sure why Kurt wrote it using the determinant.  I don't see why
it can't be written as

function z = cross (x, y)

if (nargin != 2)
usage ("cross (x, y)");
endif

if (length (x) == 3 && length (y) == 3)

z = [x(2)*y(3) - x(3)*y(2); x(3)*y(1) - x(1)*y(3); x(1)*y(2) - x(2)*y(1)];

x_nr = rows (x);
y_nr = rows (y);

if ((x_nr == y_nr && x_nr == 1)
|| (x_nr != y_nr && ! prefer_column_vectors))
z = z';
endif

else
error ("cross: both x and y must be 3-dimensional vectors");
endif

endfunction

(I believe I got the signs right).

Thanks,

jwe

```