As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option.
Alternatively you can here view or download the uninterpreted source code file.
For more information about "trackball.h" see the Fossies "Dox" file reference documentation.

1 /* 2 * (c) Copyright 1993, 1994, Silicon Graphics, Inc. 3 * ALL RIGHTS RESERVED 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. 11 * 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. 24 * 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. 34 * 35 * OpenGL(TM) is a trademark of Silicon Graphics, Inc. 36 */ 37 /* 38 * trackball.h 39 * A virtual trackball implementation 40 * Written by Gavin Bell for Silicon Graphics, November 1988. 41 */ 42 43 /* 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). 46 * 47 * The resulting rotation is returned as a quaternion rotation in the 48 * first paramater. 49 */ 50 void 51 gfs_gl_trackball(float q[4], float p1x, float p1y, float p2x, float p2y); 52 53 /* 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). 60 */ 61 void 62 gfs_gl_add_quats(float *q1, float *q2, float *dest); 63 64 /* 65 * A useful function, builds a rotation matrix in Matrix based on 66 * given quaternion. 67 */ 68 void 69 gfs_gl_build_rotmatrix(float m[4][4], float q[4]); 70 71 /* 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. 75 */ 76 void 77 gfs_gl_axis_to_quat(float a[3], float phi, float q[4]); 78