Unix/Linux Go Back    

Plan 9 - man page for quaternion (plan9 section 9)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

QUATERNION(9.2) 								  QUATERNION(9.2)

       qtom,  mtoq, qadd, qsub, qneg, qmul, qdiv, qunit, qinv, qlen, slerp, qmid, qsqrt - Quater-
       nion arithmetic

       #include <libg.h>

       #include <geometry.h>

       Quaternion qadd(Quaternion q, Quaternion r)

       Quaternion qsub(Quaternion q, Quaternion r)

       Quaternion qneg(Quaternion q)

       Quaternion qmul(Quaternion q, Quaternion r)

       Quaternion qdiv(Quaternion q, Quaternion r)

       Quaternion qinv(Quaternion q)

       double qlen(Quaternion p)

       Quaternion qunit(Quaternion q)

       void qtom(Matrix m, Quaternion q)

       Quaternion mtoq(Matrix mat)

       Quaternion slerp(Quaternion q, Quaternion r, double a)

       Quaternion qmid(Quaternion q, Quaternion r)

       Quaternion qsqrt(Quaternion q)

       The Quaternions are a non-commutative extension field of the Real numbers, designed to  do
       for  rotations  in  3-space what the complex numbers do for rotations in 2-space.  Quater-
       nions have a real component r and an imaginary vector  component  v=(i,j,k).   Quaternions
       add componentwise and multiply according to the rule (r,v)(s,w)=(rs-v.w, rw+vs+vxw), where
       . and x are the ordinary vector dot and cross products.	The multiplicative inverse  of	a
       non-zero quaternion (r,v) is (r,-v)/(r2-v.v).

       The following routines do arithmetic on quaternions, represented as

	      typedef struct Quaternion Quaternion;
	      struct Quaternion{
		    double r, i, j, k;

       Name   Description

       qadd   Add two quaternions.

       qsub   Subtract two quaternions.

       qneg   Negate a quaternion.

       qmul   Multiply two quaternions.

       qdiv   Divide two quaternions.

       qinv   Return the multiplicative inverse of a quaternion.

       qlen   Return sqrt(q.r*q.r+q.i*q.i+q.j*q.j+q.k*q.k), the length of a quaternion.

       qunit  Return a unit quaternion (length=1) with components proportional to q's.

       A  rotation  by	angle 0 about axis A (where A is a unit vector) can be represented by the
       unit quaternion q=(cos 0/2, Asin 0/2).  The same rotation is represented by -q; a rotation
       by -0 about -A is the same as a rotation by 0 about A.  The quaternion q transforms points
       by (0,x',y',z') = q-1(0,x,y,z)q.  Quaternion multiplication composes rotations.	The  ori-
       entation  of  an  object in 3-space can be represented by a quaternion giving its rotation
       relative to some `standard' orientation.

       The following routines operate on rotations or orientations represented	as  unit  quater-

       mtoq   Convert a rotation matrix (see tstack(9.2)) to a unit quaternion.

       qtom   Convert a unit quaternion to a rotation matrix.

       slerp  Spherical lerp.  Interpolate between two orientations.  The rotation that carries q
	      to r is q-1r, so slerp(q, r, t) is q(q-1r)t.

       qmid   slerp(q, r, .5)

       qsqrt  The square root of q.  This is just a rotation about the	same  axis  by	half  the


       tstack(9.2), qball(9.2)

Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 12:59 PM.