quat

quat — quaternion helpers

Functions

gboolean g3d_quat_add ()
gboolean g3d_quat_normalize ()
gboolean g3d_quat_rotate ()
gboolean g3d_quat_to_matrix ()
gboolean g3d_quat_to_rotation_xyz ()
gboolean g3d_quat_trackball ()

Types and Values

typedef G3DQuat

Includes

#include <g3d/quat.h>

Description

Functions

g3d_quat_add ()

gboolean
g3d_quat_add (G3DQuat *qr,
              G3DQuat *q1,
              G3DQuat *q2);

Add two quats.

Parameters

qr

result quat

 

q1

first quat

 

q2

second quat

 

Returns

TRUE on success, FALSE else


g3d_quat_normalize ()

gboolean
g3d_quat_normalize (G3DQuat *q);

normalize the quaternion to a length of 1.0.

Parameters

q

a quaternion

 

Returns

TRUE on success, FALSE else


g3d_quat_rotate ()

gboolean
g3d_quat_rotate (G3DQuat *q,
                 G3DVector *axis,
                 G3DFloat angle);

Encode a rotation around an axis into quaternion.

Parameters

q

resulting quat

 

axis

rotation axis

 

angle

rotation angle

 

Returns

TRUE on success, FALSE else


g3d_quat_to_matrix ()

gboolean
g3d_quat_to_matrix (G3DQuat *q,
                    G3DMatrix *matrix);

Convert a quaternion to a transformation matrix.

Parameters

q

source quat

 

matrix

resulting matrix

 

Returns

TRUE on success, FALSE else


g3d_quat_to_rotation_xyz ()

gboolean
g3d_quat_to_rotation_xyz (G3DQuat *q,
                          G3DFloat *rx,
                          G3DFloat *ry,
                          G3DFloat *rz);

Calculate the rotation around the three coordinate axes from a given quaternion.

Parameters

q

a quaternion

 

rx

rotation around x axis

 

ry

rotation around y axis

 

rz

rotation around z axis

 

Returns

TRUE on success, FALSE else


g3d_quat_trackball ()

gboolean
g3d_quat_trackball (G3DQuat *q,
                    G3DFloat x1,
                    G3DFloat y1,
                    G3DFloat x2,
                    G3DFloat y2,
                    G3DFloat r);

Emulate a virtual trackball movement and return rotation as quaternion. The x and y values of the starting and end point of the movement have to be in the range -1.0 .. 1.0.

Parameters

q

resulting quaternion

 

x1

x value of first point

 

y1

y value of first point

 

x2

x value of second point

 

y2

y value of second point

 

r

radius of virtual trackball, usually 0.8

 

Returns

TRUE on success, FALSE else

Types and Values

G3DQuat

typedef G3DFloat G3DQuat;

Quaternion element type.