"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