]> Creatis software - creaVtk.git/blobdiff - lib/creaVtk/creaVtkHeartAngles.cpp
2196 creaVtk Feature New Normal Completion of code HeartAngles 2013-12-04 11:20
[creaVtk.git] / lib / creaVtk / creaVtkHeartAngles.cpp
index 916f0b7190426d90c60115b3165941541a03a609..cceaa643963d809df8312c2a1a8e1cc48986a0de 100644 (file)
@@ -37,6 +37,16 @@ creaVtkHeartAngles::~creaVtkHeartAngles()
 {
 }
 
+vtkImageData* creaVtkHeartAngles::getAlphaImage ()
+{
+       return alphaImage;
+}
+
+vtkImageData* creaVtkHeartAngles::getBetaImage ()
+{
+       return betaImage;
+};
+
 double creaVtkHeartAngles::alpha (double P0a, double P0b,double P0c, double vx, double vy, double vz, double vxp, double vyp, double vzp)
 {
        double a=P0a,b=P0b,c=P0c;
@@ -161,55 +171,60 @@ double *creaVtkHeartAngles::intersectionPlaneLine(double plx1, double ply1, doub
        return puntoCorte;
 }
 
-vtkImageData* creaVtkHeartAngles::calculateAngleAlpha (vtkImageData* image, double Px, double Py, double Pz, double Vx, double Vy, double Vz, double Nx, double Ny, double Nz /*, double* pPlane*/)
+void creaVtkHeartAngles::calculateImages (vtkImageData* image, double Px, double Py, double Pz, double Vx, double Vy, double Vz, double Nx, double Ny, double Nz, double p2x, double p2y, double p2z)
 {
-       unsigned char* pPix;
-       pPix = (unsigned char*)image->GetScalarPointer();
-
-       for(int i=0;i<1041;i=i+3){
-               int p1 = pPix[i];
-               int p2 = pPix[i+1];
-               int p3 = pPix[i+2];
-
-       double* vecProj;
-       vecProj = vectorProjection (Px, Py, Pz, Nx, Ny, Nz, p1, p2, p3);
-       double a, b;
-
-       //double* cutPoint;
-       //cutPoint = intersectionPlaneLine(pPlane[0], pPlane[1], pPlane[2], pPlane[3], pPlane[4], pPlane[5], pPlane[6], pPlane[7], pPlane[8], px1, py1, pz1, px2, py2, pz2);
-
-       a = alpha (p1, p2, p3, 
-                                                p1, p2, p3, //?? es el vector?
-                                                vecProj[0], vecProj[1], vecProj[2]);
-
-       }
-       
-       
-}
+       alphaImage = image;
+  alphaImage->SetExtent( image->GetExtent() );
+  alphaImage->SetOrigin( image->GetOrigin() );
+  alphaImage->SetSpacing( image->GetSpacing() );
+  alphaImage->SetScalarTypeToUnsignedChar();
+  alphaImage->SetNumberOfScalarComponents( image->GetNumberOfScalarComponents() );
+  alphaImage->AllocateScalars();
+
+       betaImage = image;
+  betaImage->SetExtent( image->GetExtent() );
+  betaImage->SetOrigin( image->GetOrigin() );
+  betaImage->SetSpacing( image->GetSpacing() );
+  betaImage->SetScalarTypeToUnsignedChar();
+  betaImage->SetNumberOfScalarComponents( image->GetNumberOfScalarComponents() );
+  betaImage->AllocateScalars();
 
-vtkImageData* creaVtkHeartAngles::calculateAngleBeta (vtkImageData* image, double Px, double Py, double Pz, double Vx, double Vy, double Vz, double Nx, double Ny, double Nz /*, double* pPlane*/)
-{
        unsigned char* pPix;
        pPix = (unsigned char*)image->GetScalarPointer();
+       double a;
+       double b;
+
+       for( int i = 0 ; i < image->GetExtent()[1] ; i++ )
+  {
+    for( int j = 0 ; j < image->GetExtent()[3] ; j++ )
+       {
+                       for( int k = 0 ; k < image->GetExtent()[5] ; k++ )
+               {
+                       unsigned char* pPix = (unsigned char *)image->GetScalarPointer( i , j , k );
+                       int p1 = pPix[0];
+                       int p2 = pPix[1];
+                       int p3 = pPix[2];
+                       
+                       double* vecProj;
+                       vecProj = vectorProjection (Px, Py, Pz,
+                                                                                                                                       Nx, Ny, Nz, 
+                                                                                                                                       p1, p2, p3);
+                       a = alpha (Px, Py, Pz, 
+                                                          p1, p2, p3, 
+                                                          vecProj[0], vecProj[1], vecProj[2]);
+
+                       b = beta  (Px, Py, Pz, 
+                                                          p2x, p2y, p2z, 
+                                                          vecProj[0], vecProj[1], vecProj[2]);
+                       
+                       unsigned char *zPtr1 = (unsigned char *) alphaImage->GetScalarPointer( i , j , k );
+                       *zPtr1 = a;
+                       unsigned char *zPtr2 = (unsigned char *) betaImage->GetScalarPointer( i , j , k );
+                       *zPtr2 = b; 
+                       }
+       } 
+  }
+}
 
-       for(int i=0;i<1041;i=i+3){
-               int p1 = pPix[i];
-               int p2 = pPix[i+1];
-               int p3 = pPix[i+2];
-
-       double* vecProj;
-       vecProj = vectorProjection (Px, Py, Pz, Nx, Ny, Nz, p1, p2, p3);
-       double a, b;
-
-       //double* cutPoint;
-       //cutPoint = intersectionPlaneLine(pPlane[0], pPlane[1], pPlane[2], pPlane[3], pPlane[4], pPlane[5], pPlane[6], pPlane[7], pPlane[8], px1, py1, pz1, px2, py2, pz2);
 
-       b = beta (0, 0, 0, 
-                                               p1, p2, p3, //?? es el vector?
-                                               vecProj[0], vecProj[1], vecProj[2]);
-               
-       }
-       
-       
-}