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 
42 typedef struct {
43  boolean simp;
45  unsigned int n;
50  unsigned int neq;
52  unsigned int r[MAX_EQ_MATRIX];
53  unsigned int c[MAX_EQ_MATRIX];
54 } TMequation;
55 
63 void InitMEquation(TMequation *me);
64 
73 void CopyMEquation(TMequation *me_dst,TMequation *me_src);
74 
83 void ResetMEquation(TMequation *me);
84 
92 boolean IsEmptyMEquation(TMequation *me);
93 
105 unsigned int MEquationSize(TMequation *me);
106 
116 boolean HasRotations(TMequation *me);
117 
127 
138 boolean VarIncludedinMEquation(unsigned int v,TMequation *me);
139 
150 void AddVarTrans2MEquation(unsigned int t,int s,unsigned int v,TMequation *me);
151 
163 void AddDispTrans2MEquation(int s,unsigned int v,
164  double *vect,TMequation *me);
165 
178 void AddPatchTrans2MEquation(unsigned int t,int s,unsigned int u,unsigned int v,
179  double **p,TMequation *me);
180 
193 
204 void AddTransSeq2MEquation(int s,TTransSeq *ts,TMequation *me);
205 
215 unsigned int NumberScalarEquations(TMequation *me);
216 
227 void ShiftVariablesInMEquation(unsigned int nv,TMequation *me);
228 
242 unsigned int FixVarInMEquation(unsigned int nv,double v,TMequation *me);
243 
254 void ReplaceVarInMEquation(unsigned int nv,unsigned int nvNew,TMequation *me);
255 
267 boolean SimplifiedMEquation(TMequation *me);
268 
286 void SimplifyMEquation(TMequation *me);
287 
298 void DeriveMEquation(unsigned int v,TMequation *dme,TMequation *me);
299 
313 unsigned int EvaluateMEquation(double *v,double *r,TMequation *me);
314 
329 void EvaluateMEquationXVectors(double *v,unsigned int n,double *p,
330  double *r,TMequation *me);
331 
342 void PrintMEquation(FILE *f,char **varNames,TMequation *me);
343 
351 void DeleteMEquation(TMequation *me);
352 
353 #endif
Definition of the boolean type.
unsigned int EvaluateMEquation(double *v, double *r, TMequation *me)
Evaluates a matrix equation.
Definition: mequation.c:415
void ReplaceVarInMEquation(unsigned int nv, unsigned int nvNew, TMequation *me)
Replaces a variable.
Definition: mequation.c:345
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:353
void InitMEquation(TMequation *me)
Construtor.
Definition: mequation.c:99
A homgeneous transform in R^3.
TTransSeq ** ts
Definition: mequation.h:46
#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:358
Matrix equation.
Definition: mequation.h:42
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:473
void CopyMEquation(TMequation *me_dst, TMequation *me_src)
Copy constructor.
Definition: mequation.c:113
unsigned int n
Definition: mequation.h:45
A sequence of transforms.
Definition: trans_seq.h:319
void ShiftVariablesInMEquation(unsigned int nv, TMequation *me)
Adjust variable indices after removina a variable.
Definition: mequation.c:288
unsigned int FixVarInMEquation(unsigned int nv, double v, TMequation *me)
Set a variable to a constant value.
Definition: mequation.c:296
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:43
unsigned int neq
Definition: mequation.h:50
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:371
unsigned int NumberScalarEquations(TMequation *me)
Number of scaler equations defined by a matrix equation.
Definition: mequation.c:283
void DeleteMEquation(TMequation *me)
Destructor.
Definition: mequation.c:492
void EvaluateMEquationXVectors(double *v, unsigned int n, double *p, double *r, TMequation *me)
Equation x vector evaluation.
Definition: mequation.c:437
THTransform rhs
Definition: mequation.h:48
void AddVarTrans2MEquation(unsigned int t, int s, unsigned int v, TMequation *me)
Adds a variable transform to the matrix equation.
Definition: mequation.c:212