[1581] | 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 | 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 | 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 | 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 | axis_to_quat(float a[3], float phi, float q[4]); |
---|
| 78 | |
---|