Institut de Robòtica i Informàtica Industrial
KRD Group

The CuikSuite Project

link.h

Go to the documentation of this file.
00001 #ifndef LINKH
00002 #define LINKH
00003 
00004 #include "vector.h"
00005 #include "interval.h"
00006 #include "equation.h"
00007 #include "cuiksystem.h"
00008 #include "box.h"
00009 #include "cpolyhedron.h"
00010 #include "plot3d.h"
00011 #include "color.h"
00012 #include "htransform.h"
00013 
00014 #include <stdlib.h>
00015 
00074 #define ROT_REP 1
00075 
00084 #define ROT_REDUNDANCY 0
00085 
00086 /************************************************************************************/
00094 #define INIT_NUM_SHAPES 2
00095 /****************************************************************************/
00102 #define DLC_R 0.5
00103 
00110 #define DLC_G 0.5
00111 
00118 #define DLC_B 0
00119 /************************************************************************************/
00120 /************************************************************************************/
00127 #define CC_R 1
00128 
00135 #define CC_G 0
00136 
00143 #define CC_B 0
00144 /************************************************************************************/
00145 
00152 #define IsGroundLink(id) (id==0)
00153 
00162 typedef struct {
00163   char *name; 
00165   double s; 
00170   double c; 
00175   THTransform R; 
00186   Tvector bodies; 
00191   unsigned int axisID[3]; 
00197   double maxCoord; 
00198 } Tlink;
00199 
00208 void InitLink(char *name,Tlink *l);
00209 
00218 void CopyLink(Tlink *l_dst,Tlink *l_src);
00219 
00228 void AddBody2Link(Tcpolyhedron *b,Tlink *l);
00229 
00260 void ChangeLinkReferenceFrame(double **p1,double **p2,Tlink *l);
00261 
00271 unsigned int LinkNBodies(Tlink *l);
00272 
00273 
00287 Tcpolyhedron *GetLinkBody(unsigned int i,Tlink *l);
00288 
00297 char *GetLinkName(Tlink *l);
00298 
00313 boolean IsAllSpheres(Tlink *l);
00314 
00337 void GenerateLinkRot(Tparameters *p,unsigned int lID,TCuikSystem *cs,Tlink *l);
00338 
00367 void ApplyLinkRot(double sf,unsigned int sv,double *p,Tequation *eq,
00368                   TCuikSystem *cs,boolean groundLink,Tlink *l);
00369 
00370 
00393 void RegenerateLinkSolution(TCuikSystem *cs,double *sol,boolean groundLink,Tlink *l);
00394 
00415 void GetTransform2Link(TCuikSystem *cs,double *sol,boolean groundLink,
00416                        double *r,THTransform *t,Tlink *l);
00417 
00432 double GetLinkMaxCoordinate(Tlink *l);
00433 
00448 void PlotLink(Tplot3d *pt,double axesLength,Tlink *l);
00449 
00474 void MoveLink(Tplot3d *pt,TCuikSystem *cs,double *sol,
00475               double *r,Tlink *l);
00476 
00484 void DeleteLink(Tlink *l);
00485 
00486 #endif