00001
00002
00003
00004
00005
00015 #ifndef _SIGNMATHUTILS_H_
00016 #define _SIGNMATHUTILS_H_
00017
00018 #include <SignDLL.h>
00019
00020 class vtkMatrix4x4;
00021 class SignFiducialCollection;
00022 class vtkImageData;
00023
00024 class SIGN_EXPORT SignMathUtils
00025 {
00026 public:
00030 static vtkMatrix4x4 *RegisterFiducialSets(SignFiducialCollection *set1, SignFiducialCollection *set2);
00031
00033 static float abs(float);
00034
00036 static float dist(int a[2],int b[2]);
00038 static float dist(float a[3],float b[3]);
00040 static void Normalize (float *v);
00041 static void MultiplyMatrix(const double **A, const double **B,
00042 unsigned int rowA, unsigned int colA,
00043 unsigned int rowB, unsigned int colB,
00044 double **C);
00045 static double **AllocateMatrix(int r, int c);
00046
00053 static int ComputeRasToIjkFromCorners(double *ftl,double *ftr,double *fbr,double *ltl,double zoffset,vtkImageData* image,vtkMatrix4x4* posMat);
00055 static void ComputeRasToIjkFromScanOrder(const char* order,vtkImageData* image,vtkMatrix4x4* posMat);
00056
00057 private:
00059 static int SolveABeqCforB(vtkMatrix4x4* A, vtkMatrix4x4* B, vtkMatrix4x4* C);
00060 static int SolveABeqCforA(vtkMatrix4x4* A, vtkMatrix4x4* B, vtkMatrix4x4* C);
00061 };
00062
00063 #endif