Commit | Line | Data |
---|---|---|
8b089c5e JS |
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 |