"Fossies" - the Fresh Open Source Software Archive 
Member "gfsview-snapshot-121130/gl/trackball.h" (30 Nov 2012, 3272 Bytes) of package /linux/privat/gfsview-snapshot-121130.tar.gz:
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