]>
git.saurik.com Git - wxWidgets.git/blob - samples/opengl/penguin/trackball.h
   2  * (c) Copyright 1993, 1994, Silicon Graphics, Inc. 
   4  * Permission to use, copy, modify, and distribute this software for 
   5  * any purpose and without fee is hereby granted, provided that the above 
   6  * copyright notice appear in all copies and that both the copyright notice 
   7  * and this permission notice appear in supporting documentation, and that 
   8  * the name of Silicon Graphics, Inc. not be used in advertising 
   9  * or publicity pertaining to distribution of the software without specific, 
  10  * written prior permission. 
  12  * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" 
  13  * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, 
  14  * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR 
  15  * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON 
  16  * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, 
  17  * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY 
  18  * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, 
  19  * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF 
  20  * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN 
  21  * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON 
  22  * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE 
  23  * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. 
  25  * US Government Users Restricted Rights 
  26  * Use, duplication, or disclosure by the Government is subject to 
  27  * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph 
  28  * (c)(1)(ii) of the Rights in Technical Data and Computer Software 
  29  * clause at DFARS 252.227-7013 and/or in similar or successor 
  30  * clauses in the FAR or the DOD or NASA FAR Supplement. 
  31  * Unpublished-- rights reserved under the copyright laws of the 
  32  * United States.  Contractor/manufacturer is Silicon Graphics, 
  33  * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311. 
  35  * OpenGL(TM) is a trademark of Silicon Graphics, Inc. 
  39  * A virtual trackball implementation 
  40  * Written by Gavin Bell for Silicon Graphics, November 1988. 
  44  * Pass the x and y coordinates of the last and current positions of 
  45  * the mouse, scaled so they are from (-1.0 ... 1.0). 
  47  * The resulting rotation is returned as a quaternion rotation in the 
  51 trackball(float q
[4], float p1x
, float p1y
, float p2x
, float p2y
); 
  54  * Given two quaternions, add them together to get a third quaternion. 
  55  * Adding quaternions to get a compound rotation is analagous to adding 
  56  * translations to get a compound translation.  When incrementally 
  57  * adding rotations, the first argument here should be the new 
  58  * rotation, the second and third the total rotation (which will be 
  59  * over-written with the resulting new total rotation). 
  62 add_quats(float *q1
, float *q2
, float *dest
); 
  65  * A useful function, builds a rotation matrix in Matrix based on 
  69 build_rotmatrix(float m
[4][4], float q
[4]); 
  72  * This function computes a quaternion based on an axis (defined by 
  73  * the given vector) and an angle about which to rotate.  The angle is 
  74  * expressed in radians.  The result is put into the third argument. 
  77 axis_to_quat(float a
[3], float phi
, float q
[4]);