Mercurial > hg > octave-nkf
diff scripts/quaternion/qmult.m @ 3452:a892190f4977
[project @ 2000-01-18 06:00:57 by jwe]
author | jwe |
---|---|
date | Tue, 18 Jan 2000 06:01:04 +0000 |
parents | 1e7532b9173b |
children | 4c8a2e4e0717 |
line wrap: on
line diff
--- a/scripts/quaternion/qmult.m +++ b/scripts/quaternion/qmult.m @@ -1,21 +1,55 @@ -function retval = qmult(a,b) - # function retval = qmult(a,b) - # multiply two quaternions - # [w,x,y,z] = w*i + x*j + y*k + z - # identities: - # i^2 = j^2 = k^2 = -1 - # ij = k jk = i - # ki = j kj = -i - # ji = -k ik = -j +## Copyright (C) 1998 Auburn University. All rights reserved. +## +## This file is part of Octave. +## +## Octave 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, or (at your option) +## any later version. +## +## Octave 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 Octave; see the file COPYING. If not, write to the Free +## Software Foundation, 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} qmult (@var{a}, @var{b}) +## Multiply two quaternions. +## +## @example +## [w, x, y, z] = w*i + x*j + y*k + z +## @end example +## +## @noindent +## identities: +## +## @example +## i^2 = j^2 = k^2 = -1 +## ij = k jk = i +## ki = j kj = -i +## ji = -k ik = -j +## @end example +## @end deftypefn + +## Author: A. S. Hodel <a.s.hodel@eng.auburn.edu> +## Adapted-By: jwe + +function retval = qmult (a, b) - [a1,b1,c1,d1] = quaternion(a); - [a2,b2,c2,d2] = quaternion(b); + [a1, b1, c1, d1] = quaternion (a); + [a2, b2, c2, d2] = quaternion (b); ri = b1*c2 - c1*b2 + d1*a2 + a1*d2; rj = c1*a2 - a1*c2 + d1*b2 + b1*d2; rk = a1*b2 - b1*a2 + d1*c2 + c1*d2; rr = -(a1*a2 + b1*b2 + c1*c2) + d1*d2; - retval = quaternion(ri,rj,rk,rr); + retval = quaternion (ri, rj, rk, rr); + endfunction