00001 #ifndef HTRANSFORMH
00002 #define HTRANSFORMH
00003
00004
00005 #include "defines.h"
00006
00007 #include <stdio.h>
00008
00020
00027 #define DIM_SP 3
00028
00035 #define TX 0
00036
00043 #define TY 1
00044
00051 #define TZ 2
00052
00059 #define RX 3
00060
00067 #define RY 4
00068
00075 #define RZ 5
00076
00083 #define AXIS_X 0
00084
00091 #define AXIS_Y 1
00092
00099 #define AXIS_Z 2
00100
00108 #define AXIS_H 3
00109
00110
00126 typedef double THTransform[DIM_SP+1][DIM_SP+1];
00127
00135 void HTransformIdentity(THTransform *t);
00136
00145 void HTransformCopy(THTransform *t_dst,THTransform *t_org);
00146
00155 void HTransformTx(double tx,THTransform *t);
00156
00165 void HTransformTy(double ty,THTransform *t);
00166
00175 void HTransformTz(double tz,THTransform *t);
00176
00187 void HTransformTxyz(double tx,double ty,double tz,THTransform *t);
00188
00197 void HTransformRx(double rx,THTransform *t);
00198
00207 void HTransformRy(double ry,THTransform *t);
00208
00217 void HTransformRz(double rz,THTransform *t);
00218
00228 void HTransformRx2(double s,double c,THTransform *t);
00229
00239 void HTransformRy2(double s,double c,THTransform *t);
00240
00250 void HTransformRz2(double s,double c,THTransform *t);
00251
00263 void HTransformCreate(unsigned int dof_r3,double v,THTransform *t);
00264
00265
00279 void HTransformSetElement(unsigned int i,unsigned int j,double v,THTransform *t);
00280
00292 double HTransformGetElement(unsigned int i,unsigned int j,THTransform *t);
00293
00303 void HTransformProduct(THTransform *t1,THTransform *t2,THTransform *t3);
00304
00314 void HTransformAdd(THTransform *t1,THTransform *t2,THTransform *t3);
00315
00324 void HTransformInverse(THTransform *t,THTransform *ti);
00325
00326
00353 void HTransformOrthonormalize(THTransform *t,THTransform *ta);
00354
00375 void HTransformX2Vect(double sy,double sz,
00376 double *p1,double *p2,THTransform *t);
00377
00387 void HTransformTranspose(THTransform *t,THTransform *tt);
00388
00404 void HTransformAcumTrans(double tx,double ty,double tz,THTransform *t);
00405
00406
00423 void HTransformAcumTrans2(THTransform *t_in,double tx,double ty,double tz,THTransform *t);
00424
00439 void HTransformAcumRot(unsigned int type,double s,double c,THTransform *t);
00440
00457 void HTransformAcumRot2(THTransform *t_in,unsigned int type,double s,double c,THTransform *t);
00458
00468 void HTransformApply(double *p_in,double *p_out,THTransform *t);
00469
00470
00479 void HTransformPrint(FILE *f,THTransform *t);
00480
00495 void HTransformPrintT(FILE *f,THTransform *t);
00496
00504 void HTransformDelete(THTransform *t);
00505
00506 #endif