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

The CuikSuite Project

interval.h

Go to the documentation of this file.
00001 #ifndef INTERVALH
00002 #define INTERVALH
00003 
00004 #include "boolean.h"
00005 
00006 #include <stdio.h>
00007 
00033 typedef struct
00034 {
00035   double lower_limit; 
00036   double upper_limit; 
00037 } Tinterval;
00038 
00048 void NewInterval(double lower,double upper,Tinterval *i);
00049 
00058 void CopyInterval(Tinterval *i_dst,Tinterval *i_org);
00059 
00070 boolean CmpIntervals(Tinterval *i1,Tinterval *i2);
00071 
00081 double LowerLimit(Tinterval *i);
00082 
00092 double UpperLimit(Tinterval *i);
00093 
00103 double IntervalSize(Tinterval *i);
00104 
00115 boolean IsInside(double p,Tinterval *i);
00116 
00127 double IntervalCenter(Tinterval *i);
00128 
00137 void SetLowerLimit(double c,Tinterval *i);
00138 
00147 void SetUpperLimit(double c,Tinterval *i);
00148 
00159 boolean IntervalInclusion(Tinterval *i1,Tinterval *i2);
00160 
00171 boolean Intersect(Tinterval *i1,Tinterval *i2);
00172 
00184 boolean Intersection(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
00185 
00198 boolean Union(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
00199 
00209 boolean EmptyInterval(Tinterval *i);
00210 
00220 void IntervalScale(Tinterval *i1,double e,Tinterval *i_out);
00221 
00231 void IntervalProduct(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
00232 
00242 void IntervalAdd(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
00243 
00253 void IntervalSubstract(Tinterval *i1,Tinterval *i2,Tinterval *i_out);
00254 
00264 void IntervalInvert(Tinterval *i,Tinterval *i_out);
00265 
00276 void IntervalPow(Tinterval *i,unsigned int p,Tinterval *i_out);
00277 
00290 boolean IntervalSqrt(Tinterval *i,Tinterval *i_out);
00291 
00302 void IntervalDivision(Tinterval *num,Tinterval *den,Tinterval *i_out);
00303 
00313 void IntervalOffset(Tinterval *i,double offset,Tinterval *i_out);
00314 
00323 void IntervalSinus(Tinterval *i,Tinterval *i_out);
00324 
00333 void IntervalCosinus(Tinterval *i,Tinterval *i_out);
00334 
00352 void IntervalAtan2(Tinterval *is,Tinterval *ic,Tinterval *i_out);
00353 
00362 void PrintInterval(FILE *f,Tinterval *i);
00363 
00371 void DeleteInterval(Tinterval *i);
00372 
00373 #endif