mequation.h
Go to the documentation of this file.
1 #ifndef MEQUATIONH
2 #define MEQUATIONH
3 
4 #include "trans_seq.h"
5 #include "boolean.h"
6 
7 #include <stdio.h>
8 
24 #define MAX_EQ_MATRIX 9
25 
38 typedef struct {
39  boolean simp;
41  unsigned int n;
46  unsigned int neq;
48  unsigned int r[MAX_EQ_MATRIX];
49  unsigned int c[MAX_EQ_MATRIX];
50 } TMequation;
51 
59 void InitMEquation(TMequation *me);
60 
69 void CopyMEquation(TMequation *me_dst,TMequation *me_src);
70 
79 void ResetMEquation(TMequation *me);
80 
88 boolean IsEmptyMEquation(TMequation *me);
89 
101 unsigned int MEquationSize(TMequation *me);
102 
112 boolean HasRotations(TMequation *me);
113 
123 
134 boolean VarIncludedinMEquation(unsigned int v,TMequation *me);
135 
146 void AddVarTrans2MEquation(unsigned int t,int s,unsigned int v,TMequation *me);
147 
159 void AddDispTrans2MEquation(int s,unsigned int v,
160  double *vect,TMequation *me);
161 
174 void AddPatchTrans2MEquation(unsigned int t,int s,unsigned int u,unsigned int v,
175  double **p,TMequation *me);
176 
189 
200 void AddTransSeq2MEquation(int s,TTransSeq *ts,TMequation *me);
201 
211 unsigned int NumberScalarEquations(TMequation *me);
212 
223 void ShiftVariablesInMEquation(unsigned int nv,TMequation *me);
224 
236 boolean SimplifiedMEquation(TMequation *me);
237 
255 void SimplifyMEquation(TMequation *me);
256 
267 void DeriveMEquation(unsigned int v,TMequation *dme,TMequation *me);
268 
282 unsigned int EvaluateMEquation(double *v,double *r,TMequation *me);
283 
298 void EvaluateMEquationXVectors(double *v,unsigned int n,double *p,
299  double *r,TMequation *me);
300 
311 void PrintMEquation(FILE *f,char **varNames,TMequation *me);
312 
320 void DeleteMEquation(TMequation *me);
321 
322 #endif
Definition of the boolean type.
unsigned int EvaluateMEquation(double *v, double *r, TMequation *me)
Evaluates a matrix equation.
Definition: mequation.c:356
boolean HasRotations(TMequation *me)
Cheks if a matrix equation includes rotations.
Definition: mequation.c:163
void AddDispTrans2MEquation(int s, unsigned int v, double *vect, TMequation *me)
Adds a displacement along a vector.
Definition: mequation.c:206
boolean SimplifiedMEquation(TMequation *me)
Identifies simplified equations.
Definition: mequation.c:294
void InitMEquation(TMequation *me)
Construtor.
Definition: mequation.c:99
A homgeneous transform in R^3.
TTransSeq ** ts
Definition: mequation.h:42
#define MAX_EQ_MATRIX
Max number of scalar equations in a matrix equation.
Definition: mequation.h:24
void SimplifyMEquation(TMequation *me)
Tries to reduce the complexity of the matrix equation.
Definition: mequation.c:299
Matrix equation.
Definition: mequation.h:38
void SetTranslationMEquation(TMequation *me)
Sets a matrix equation as a translation equation.
Definition: mequation.c:174
boolean VarIncludedinMEquation(unsigned int v, TMequation *me)
Checks if the matrix equation includes a given variable.
Definition: mequation.c:191
Sequence (product) of homogeneous transforms.
void PrintMEquation(FILE *f, char **varNames, TMequation *me)
Prints a Transform sequence to a file.
Definition: mequation.c:414
void CopyMEquation(TMequation *me_dst, TMequation *me_src)
Copy constructor.
Definition: mequation.c:113
unsigned int n
Definition: mequation.h:41
A sequence of transforms.
Definition: trans_seq.h:296
void ShiftVariablesInMEquation(unsigned int nv, TMequation *me)
Adjust variable indices after removina a variable.
Definition: mequation.c:286
void ResetMEquation(TMequation *me)
Resets the information stored in the matrix equation.
Definition: mequation.c:134
boolean IsEmptyMEquation(TMequation *me)
Identify empty matrix equations.
Definition: mequation.c:145
unsigned int MEquationSize(TMequation *me)
Size of the matrix equation.
Definition: mequation.c:150
void AddPatchTrans2MEquation(unsigned int t, int s, unsigned int u, unsigned int v, double **p, TMequation *me)
Adds a Parametrized-Patch transform to a matrix equation.
Definition: mequation.c:224
void AddCtTrans2MEquation(THTransform *t, TMequation *me)
Adds a constant transform to a matrix equation.
Definition: mequation.c:238
boolean simp
Definition: mequation.h:39
unsigned int neq
Definition: mequation.h:46
void AddTransSeq2MEquation(int s, TTransSeq *ts, TMequation *me)
Concatenates a transform sequence to the matrix equation.
Definition: mequation.c:250
void DeriveMEquation(unsigned int v, TMequation *dme, TMequation *me)
Derives a matrix equation.
Definition: mequation.c:312
unsigned int NumberScalarEquations(TMequation *me)
Number of scaler equations defined by a matrix equation.
Definition: mequation.c:281
void DeleteMEquation(TMequation *me)
Destructor.
Definition: mequation.c:432
void EvaluateMEquationXVectors(double *v, unsigned int n, double *p, double *r, TMequation *me)
Equation x vector evaluation.
Definition: mequation.c:378
THTransform rhs
Definition: mequation.h:44
void AddVarTrans2MEquation(unsigned int t, int s, unsigned int v, TMequation *me)
Adds a variable transform to the matrix equation.
Definition: mequation.c:212