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

The CuikSuite Project

linear_constraint.h

Go to the documentation of this file.
00001 #ifndef LINEARCONSTRAINT
00002 #define LINEARCONSTRAINT
00003 
00004 #include "interval.h"
00005 #include "boolean.h"
00006 #include "box.h"
00007 
00008 #include <stdio.h>
00009 
00010 
00023 /************************************************************************************/
00030 #define INIT_NUM_TERMS_LC 10
00031 /************************************************************************************/
00032 
00050 typedef struct {
00051   unsigned int n; 
00052   unsigned int max;
00053   unsigned int *ind; 
00054   double *val;
00055   Tinterval error;
00056 } TLinearConstraint;
00057 
00058 
00066 void InitLinearConstraint(TLinearConstraint *lc);
00067 
00068 
00078 void ResetLinearConstraint(TLinearConstraint *lc);
00079 
00088 void CopyLinearConstraint(TLinearConstraint *lc_dst,TLinearConstraint *lc_src);
00089 
00090 
00100 unsigned int GetNumTermsInLinearConstraint(TLinearConstraint *lc);
00101 
00102 
00112 double *GetLinearConstraintCoefficients(TLinearConstraint *lc);
00113 
00114 
00130 double GetLinearConstraintCoefficient(unsigned int i,TLinearConstraint *lc);
00131 
00142 unsigned int *GetLinearConstraintVariables(TLinearConstraint *lc);
00143 
00155 unsigned int GetLinearConstraintVariable(unsigned int i,TLinearConstraint *lc);
00156 
00165 void GetLinearConstraintError(Tinterval *error,TLinearConstraint *lc);
00166 
00175 void SetLinearConstraintError(Tinterval *error,TLinearConstraint *lc);
00176 
00177 
00187 void AddCt2LinearConstraint(double ct,TLinearConstraint *lc);
00188 
00199 void AddTerm2LinearConstraint(unsigned int ind,double val,TLinearConstraint *lc);
00200 
00211 double RemoveTermFromLinearConstraint(unsigned int ind,TLinearConstraint *lc);
00212 
00213 
00224 boolean LinearConstraintIncludes(unsigned int ind,TLinearConstraint *lc);
00225 
00226 
00234 void InvertLinearConstraint(TLinearConstraint *lc);
00235 
00244 void ScaleLinearConstraint(double a,TLinearConstraint *lc);
00245 
00246 
00255 void AddLinearConstraints(TLinearConstraint *lc1,TLinearConstraint *lc);
00256 
00275 void CleanLinearConstraint(double epsilon,Tinterval *is,TLinearConstraint *lc);
00276 
00301 boolean SimplifyLinearConstraint(boolean *full,Tinterval *is,TLinearConstraint *lc);
00302 
00329 unsigned int CropLinearConstraint(double epsilon,
00330                                   Tbox *b,
00331                                   TLinearConstraint *lc);
00332 
00350 boolean CmpLinearConstraints(double *scaleOne2Two,TLinearConstraint *lc1,TLinearConstraint *lc2);
00351 
00368 double EvaluateLinearConstraint(double *varValues,TLinearConstraint *lc);
00369 
00382 void EvaluateLinearConstraintInt(Tinterval *varValues,Tinterval *i_out,TLinearConstraint *lc);
00383 
00398 void PrintLinearConstraint(FILE *f,boolean eq,char **varName,TLinearConstraint *lc);
00399 
00408 void SaveLinearConstraint(FILE *f,TLinearConstraint *lc);
00409 
00418 void LoadLinearConstraint(FILE *f,TLinearConstraint *lc);
00419 
00427 void DeleteLinearConstraint(TLinearConstraint *lc);
00428 
00429 #endif