#ifndef _PROJ_H #define _PROJ_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // for pick matrix #include // for drawing a solid cube #include #include #include #include #include #include #include #include "debug.h" typedef enum { X = 0, Y = 1, Z = 2, W = 3 } TransCoord; typedef enum { BVH = 0, QBVH = 1 } FileType ; typedef enum { Min = 0, Max = 1, Sock = 2 } FlexCoord; typedef enum{ CONST_SPD = 0, REAL_TIME = 1 } PLAYMODE; // rotation type typedef enum { EULER = 1, QUAT = 2, EXPMAP = 3 } RotType; typedef enum { J_NONE = 0, J_BEND = 1, J_SOCK = 2, J_TWST = 3 } JointType; typedef enum { AXIS_NO = 0, // no rot AXIS_PB = 1, // parent bone as axis AXIS_TB = 2, // this bone as axis AXIS_PBxTB = 3 // parent bone cross this bone as axis } JointAxis; typedef double Point3D[3]; typedef double Point4D[4]; typedef struct Node Node; typedef struct Bone Bone; #define LINESIZE 250 #define NEAR_ZERO 0.0001 /* if diff bigger>NEAR_ZERO slerp, else lin interp, in conv q, emap stuff, if