euler.h File Reference

Go to the source code of this file.

Classes

struct  QuatX

Defines

#define EulFrmS   0
#define EulFrmR   1
#define EulFrm(ord)   ((unsigned)(ord)&1)
#define EulRepNo   0
#define EulRepYes   1
#define EulRep(ord)   (((unsigned)(ord)>>1)&1)
#define EulParEven   0
#define EulParOdd   1
#define EulPar(ord)   (((unsigned)(ord)>>2)&1)
#define EulSafe   "\000\001\002\000"
#define EulNext   "\001\002\000\001"
#define EulAxI(ord)   ((int)(EulSafe[(((unsigned)(ord)>>3)&3)]))
#define EulAxJ(ord)   ((int)(EulNext[EulAxI(ord)+(EulPar(ord)==EulParOdd)]))
#define EulAxK(ord)   ((int)(EulNext[EulAxI(ord)+(EulPar(ord)!=EulParOdd)]))
#define EulAxH(ord)   ((EulRep(ord)==EulRepNo)?EulAxK(ord):EulAxI(ord))
#define EulGetOrd(ord, i, j, k, h, n, s, f)
#define EulOrd(i, p, r, f)   (((((((i)<<1)+(p))<<1)+(r))<<1)+(f))
#define EulOrdXYZs   EulOrd(X,EulParEven,EulRepNo,EulFrmS)
#define EulOrdXYXs   EulOrd(X,EulParEven,EulRepYes,EulFrmS)
#define EulOrdXZYs   EulOrd(X,EulParOdd,EulRepNo,EulFrmS)
#define EulOrdXZXs   EulOrd(X,EulParOdd,EulRepYes,EulFrmS)
#define EulOrdYZXs   EulOrd(Y,EulParEven,EulRepNo,EulFrmS)
#define EulOrdYZYs   EulOrd(Y,EulParEven,EulRepYes,EulFrmS)
#define EulOrdYXZs   EulOrd(Y,EulParOdd,EulRepNo,EulFrmS)
#define EulOrdYXYs   EulOrd(Y,EulParOdd,EulRepYes,EulFrmS)
#define EulOrdZXYs   EulOrd(Z,EulParEven,EulRepNo,EulFrmS)
#define EulOrdZXZs   EulOrd(Z,EulParEven,EulRepYes,EulFrmS)
#define EulOrdZYXs   EulOrd(Z,EulParOdd,EulRepNo,EulFrmS)
#define EulOrdZYZs   EulOrd(Z,EulParOdd,EulRepYes,EulFrmS)
#define EulOrdZYXr   EulOrd(X,EulParEven,EulRepNo,EulFrmR)
#define EulOrdXYXr   EulOrd(X,EulParEven,EulRepYes,EulFrmR)
#define EulOrdYZXr   EulOrd(X,EulParOdd,EulRepNo,EulFrmR)
#define EulOrdXZXr   EulOrd(X,EulParOdd,EulRepYes,EulFrmR)
#define EulOrdXZYr   EulOrd(Y,EulParEven,EulRepNo,EulFrmR)
#define EulOrdYZYr   EulOrd(Y,EulParEven,EulRepYes,EulFrmR)
#define EulOrdZXYr   EulOrd(Y,EulParOdd,EulRepNo,EulFrmR)
#define EulOrdYXYr   EulOrd(Y,EulParOdd,EulRepYes,EulFrmR)
#define EulOrdYXZr   EulOrd(Z,EulParEven,EulRepNo,EulFrmR)
#define EulOrdZXZr   EulOrd(Z,EulParEven,EulRepYes,EulFrmR)
#define EulOrdXYZr   EulOrd(Z,EulParOdd,EulRepNo,EulFrmR)
#define EulOrdZYZr   EulOrd(Z,EulParOdd,EulRepYes,EulFrmR)

Typedefs

typedef float HMatrix [4][4]
typedef QuatX EulerAngles

Enumerations

enum  QuatPart {
  X,
  Y,
  Z,
  W
}

Functions

EulerAngles Eul_ (float ai, float aj, float ah, int order)
QuatX Eul_ToQuat (EulerAngles ea)
void Eul_ToHMatrix (EulerAngles ea, HMatrix M)
EulerAngles Eul_FromHMatrix (HMatrix M, int order)
EulerAngles Eul_FromQuat (QuatX q, int order)


Define Documentation

#define EulAxH ( ord   )     ((EulRep(ord)==EulRepNo)?EulAxK(ord):EulAxI(ord))

#define EulAxI ( ord   )     ((int)(EulSafe[(((unsigned)(ord)>>3)&3)]))

#define EulAxJ ( ord   )     ((int)(EulNext[EulAxI(ord)+(EulPar(ord)==EulParOdd)]))

#define EulAxK ( ord   )     ((int)(EulNext[EulAxI(ord)+(EulPar(ord)!=EulParOdd)]))

#define EulFrm ( ord   )     ((unsigned)(ord)&1)

#define EulFrmR   1

#define EulFrmS   0

#define EulGetOrd ( ord,
i,
j,
k,
h,
n,
s,
 ) 

Value:

{unsigned o=ord;f=o&1;o>>=1;s=o&1;o>>=1;\
    n=o&1;o>>=1;i=EulSafe[o&3];j=EulNext[i+n];k=EulNext[i+1-n];h=s?k:i;}

#define EulNext   "\001\002\000\001"

#define EulOrd ( i,
p,
r,
 )     (((((((i)<<1)+(p))<<1)+(r))<<1)+(f))

#define EulOrdXYXr   EulOrd(X,EulParEven,EulRepYes,EulFrmR)

#define EulOrdXYXs   EulOrd(X,EulParEven,EulRepYes,EulFrmS)

#define EulOrdXYZr   EulOrd(Z,EulParOdd,EulRepNo,EulFrmR)

#define EulOrdXYZs   EulOrd(X,EulParEven,EulRepNo,EulFrmS)

#define EulOrdXZXr   EulOrd(X,EulParOdd,EulRepYes,EulFrmR)

#define EulOrdXZXs   EulOrd(X,EulParOdd,EulRepYes,EulFrmS)

#define EulOrdXZYr   EulOrd(Y,EulParEven,EulRepNo,EulFrmR)

#define EulOrdXZYs   EulOrd(X,EulParOdd,EulRepNo,EulFrmS)

#define EulOrdYXYr   EulOrd(Y,EulParOdd,EulRepYes,EulFrmR)

#define EulOrdYXYs   EulOrd(Y,EulParOdd,EulRepYes,EulFrmS)

#define EulOrdYXZr   EulOrd(Z,EulParEven,EulRepNo,EulFrmR)

#define EulOrdYXZs   EulOrd(Y,EulParOdd,EulRepNo,EulFrmS)

#define EulOrdYZXr   EulOrd(X,EulParOdd,EulRepNo,EulFrmR)

#define EulOrdYZXs   EulOrd(Y,EulParEven,EulRepNo,EulFrmS)

#define EulOrdYZYr   EulOrd(Y,EulParEven,EulRepYes,EulFrmR)

#define EulOrdYZYs   EulOrd(Y,EulParEven,EulRepYes,EulFrmS)

#define EulOrdZXYr   EulOrd(Y,EulParOdd,EulRepNo,EulFrmR)

#define EulOrdZXYs   EulOrd(Z,EulParEven,EulRepNo,EulFrmS)

#define EulOrdZXZr   EulOrd(Z,EulParEven,EulRepYes,EulFrmR)

#define EulOrdZXZs   EulOrd(Z,EulParEven,EulRepYes,EulFrmS)

#define EulOrdZYXr   EulOrd(X,EulParEven,EulRepNo,EulFrmR)

#define EulOrdZYXs   EulOrd(Z,EulParOdd,EulRepNo,EulFrmS)

#define EulOrdZYZr   EulOrd(Z,EulParOdd,EulRepYes,EulFrmR)

#define EulOrdZYZs   EulOrd(Z,EulParOdd,EulRepYes,EulFrmS)

#define EulPar ( ord   )     (((unsigned)(ord)>>2)&1)

#define EulParEven   0

#define EulParOdd   1

#define EulRep ( ord   )     (((unsigned)(ord)>>1)&1)

#define EulRepNo   0

#define EulRepYes   1

#define EulSafe   "\000\001\002\000"


Typedef Documentation

typedef QuatX EulerAngles

typedef float HMatrix[4][4]


Enumeration Type Documentation

enum QuatPart

Enumerator:
X 
Y 
Z 
W 


Function Documentation

EulerAngles Eul_ ( float  ai,
float  aj,
float  ah,
int  order 
)

EulerAngles Eul_FromHMatrix ( HMatrix  M,
int  order 
)

EulerAngles Eul_FromQuat ( QuatX  q,
int  order 
)

void Eul_ToHMatrix ( EulerAngles  ea,
HMatrix  M 
)

QuatX Eul_ToQuat ( EulerAngles  ea  )