BRLCAD

#include "common.h"
#include <stdio.h>
#include <math.h>
#include "bu/log.h"
#include "vmath.h"
#include "bn/anim.h"
Go to the source code of this file.
Macros  
#define  NORMAL 0 
#define  ERROR1 1 
#define  ERROR2 2 
#define  ASM_EMPTY 0 
#define  ASM_FIRST 1 
#define  ASM_FULL 2 
Functions  
void  anim_v_permute (mat_t m) 
Routines useful in animation programs. More...  
void  anim_v_unpermute (mat_t m) 
Undo the mapping done by anim_v_permute(). More...  
void  anim_tran (mat_t m) 
Transpose matrix in place. More...  
int  anim_mat2zyx (const mat_t viewrot, vect_t angle) 
Convert the rotational part of a 4x4 transformation matrix to zyx form, that is to say, rotations carried out in the order z, y, and then x. The angles are stored in radians as a vector in the order x, y, z. A return value of ERROR1 means that arbitrary assumptions were necessary. ERROR2 means that the conversion failed. More...  
int  anim_mat2ypr (mat_t viewrot, vect_t angle) 
Convert the rotational part of a 4x4 transformation matrix to yawpitchroll form, that is to say, +roll degrees about the xaxis, pitch degrees about the yaxis, and +yaw degrees about the zaxis. The angles are stored in radians as a vector in the order y, p, r. A return of ERROR1 means that arbitrary assumptions were necessary. ERROR2 means that the conversion failed. More...  
int  anim_mat2quat (quat_t quat, const mat_t viewrot) 
This interprets the rotational part of a 4x4 transformation matrix in terms of unit quaternions. The result is stored as a vector in the order x, y, z, w. The algorithm is from Ken Shoemake, Animating Rotation with Quaternion Curves, 1985 SIGGraph Conference Proceeding, p.245. More...  
void  anim_ypr2mat (mat_t m, const vect_t a) 
Create a premultiplication rotation matrix to turn the front of an object (its xaxis) to the given yaw, pitch, and roll, which is stored in radians in the vector a. More...  
void  anim_ypr2vmat (mat_t m, const vect_t a) 
Create a postmultiplication rotation matrix, which could be used to move the virtual camera to the given yaw, pitch, and roll, which are stored in radians in the given vector a. The following are equivalent sets of commands: More...  
void  anim_y_p_r2mat (mat_t m, double y, double p, double r) 
Make matrix to rotate an object to the given yaw, pitch, and roll. (Specified in radians.) More...  
void  anim_dy_p_r2mat (mat_t m, double y, double p, double r) 
Make matrix to rotate an object to the given yaw, pitch, and roll. (Specified in degrees.) More...  
void  anim_dy_p_r2vmat (mat_t m, double yaw, double pch, double rll) 
Make a view rotation matrix, given desired yaw, pitch and roll. (Note that the matrix is a permutation of the object rotation matrix). More...  
void  anim_x_y_z2mat (mat_t m, double x, double y, double z) 
Make a rotation matrix corresponding to a rotation of "x" radians about the xaxis, "y" radians about the yaxis, and then "z" radians about the zaxis. More...  
void  anim_dx_y_z2mat (mat_t m, double x, double y, double z) 
Make a rotation matrix corresponding to a rotation of "x" degrees about the xaxis, "y" degrees about the yaxis, and then "z" degrees about the zaxis. More...  
void  anim_zyx2mat (mat_t m, const vect_t a) 
Make a rotation matrix corresponding to a rotation of "z" radians about the zaxis, "y" radians about the yaxis, and then "x" radians about the xaxis. More...  
void  anim_z_y_x2mat (mat_t m, double x, double y, double z) 
Make a rotation matrix corresponding to a rotation of "z" radians about the zaxis, "y" radians about the yaxis, and then "x" radians about the xaxis. More...  
void  anim_dz_y_x2mat (mat_t m, double x, double y, double z) 
Make a rotation matrix corresponding to a rotation of "z" degrees about the zaxis, "y" degrees about the yaxis, and then "x" degrees about the xaxis. More...  
void  anim_quat2mat (mat_t m, const quat_t qq) 
Make 4x4 matrix from the given quaternion Note: these quaternions are the conjugates of the quaternions used in the librt/qmath.c quat_quat2mat() More...  
void  anim_dir2mat (mat_t m, const vect_t d, const vect_t d2b) 
make a matrix which turns a vehicle from the xaxis to point in the desired direction, staying "rightside up" (i.e. the yaxis never has a zcomponent). A second direction vector is consulted when the given direction is vertical. This is intended to represent the direction from a previous frame. More...  
void  anim_dirn2mat (mat_t m, const vect_t dx2, const vect_t dn) 
make a matrix which turns a vehicle from the xaxis to point in the desired direction, staying "rightside up". In cases where the direction is vertical, the second vector is consulted. The second vector defines a normal to the vertical plane into which the vehicle's x and z axes should be put. A good choice to put here is the direction of the vehicle's yaxis in the previous frame. More...  
int  anim_steer_mat (mat_t mat, vect_t point, int end) 
given the next frame's position, remember the value of the previous frame's position and calculate a matrix which points the xaxis in the direction defined by those two positions. Return new matrix, and the remembered value of the current position, as arguments; return 1 as the normal value, and 0 when there is not yet information to remember. More...  
void  anim_add_trans (mat_t m, const vect_t post, const vect_t pre) 
Add pre and post translation to a rotation matrix. The resulting matrix has the effect of performing the first translation, followed by the rotation, followed by the second translation. More...  
void  anim_rotatez (fastf_t a, vect_t d) 
Rotate the vector "d" through "a" radians about the zaxis. More...  
void  anim_mat_print (FILE *fp, const mat_t m, int s_colon) 
print out 4X4 matrix, with optional colon More...  
void  anim_mat_printf (FILE *fp, const mat_t m, const char *formstr, const char *linestr, const char *endstr) 
print out 4X4 matrix. formstr must be less than twenty chars More...  
void  anim_view_rev (mat_t m) 
Reverse the direction of a view matrix, keeping it rightside up. More...  
#define NORMAL 0 
Definition at line 32 of file anim.c.
Referenced by anim_mat2ypr(), and anim_mat2zyx().
#define ERROR1 1 
Definition at line 33 of file anim.c.
Referenced by anim_mat2ypr(), and anim_mat2zyx().
#define ERROR2 2 
Definition at line 34 of file anim.c.
Referenced by anim_mat2ypr(), and anim_mat2zyx().
#define ASM_EMPTY 0 
Definition at line 686 of file anim.c.
Referenced by anim_steer_mat().
#define ASM_FIRST 1 
Definition at line 687 of file anim.c.
Referenced by anim_steer_mat().
#define ASM_FULL 2 
Definition at line 688 of file anim.c.
Referenced by anim_steer_mat().