#include "wxMaracasRenderImageTransformation.h" /** ** Class constructor **/ wxMaracasRenderImageTransformation::wxMaracasRenderImageTransformation(wxMaracasMultipleVolumeRendererManager* _vol, wxMaracasSurfaceRenderingManager* _surface1, wxMaracasSurfaceRenderingManager* _surface2, wxMaracasSurfaceRenderingManager* _surface3, int id) { vol = _vol; surface1 = _surface1; surface2 = _surface2; surface3 = _surface3; propID = id; transformV = vtkTransform::New(); transformS1 = vtkTransform::New(); transformS2 = vtkTransform::New(); transformS3 = vtkTransform::New(); } /** ** Class destructor **/ wxMaracasRenderImageTransformation::~wxMaracasRenderImageTransformation() { } /** ** Transforms a volume by the given value for the X axis **/ void wxMaracasRenderImageTransformation::Translate(int tx, int ty, int tz, int rx, int ry, int rz, int sx, int sy, int sz) { //printf("wxMaracasRenderImageManagementPanel::Rotate float:scaleX = %f \n", tx); //printf("wxMaracasRenderImageManagementPanel::Rotate float:scaleY = %f \n", ty); //printf("wxMaracasRenderImageManagementPanel::Rotate float:scaleZ = %f \n", tz); double volspX; double volspY; double volspZ; vol->getImageData()->GetSpacing(volspX, volspY, volspZ); double surfspX; double surfspY; double surfspZ; surface1->getImageData()->GetSpacing(surfspX, surfspY, surfspZ); transformV->Identity(); transformS1->Identity(); transformS2->Identity(); transformS3->Identity(); transformV->Translate( tx/*volspX*/, ty/*volspY*/, tz/*volspZ*/ ); transformS1->Translate( tx/*surfspX*/, ty/*surfspY*/, tz/*surfspZ*/ ); transformS2->Translate( tx/*surfspX*/, ty/*surfspY*/, tz/*surfspZ*/ ); transformS3->Translate( tx/*surfspX*/, ty/*surfspY*/, tz/*surfspZ*/ ); transformV->RotateX( rx/*volspX*/ ); transformS1->RotateX( rx/*surfspX*/ ); transformS2->RotateX( rx/*surfspX*/ ); transformS3->RotateX( rx/*surfspX*/ ); transformV->RotateY( ry/*volspY*/ ); transformS1->RotateY( ry/*surfspY*/ ); transformS2->RotateY( ry/*surfspY*/ ); transformS3->RotateY( ry/*surfspY*/ ); transformV->RotateZ( rz/*volspZ*/ ); transformS1->RotateZ( rz/*surfspZ*/ ); transformS2->RotateZ( rz/*surfspZ*/ ); transformS3->RotateZ( rz/*surfspZ*/ ); transformV->Scale( (sx/100.0), (sy/100.0), (sz/100.0) ); transformS1->Scale( (sx/100.0), (sy/100.0), (sz/100.0) ); transformS2->Scale( (sx/100.0), (sy/100.0), (sz/100.0) ); transformS3->Scale( (sx/100.0), (sy/100.0), (sz/100.0) ); Refresh(); } /** ** Scales a volume by the given value for the X axis * void wxMaracasRenderImageTransformation::Scale(int x, int y, int z) { float resultX = x/100.0; float resultY = y/100.0; float resultZ = z/100.0; //printf("wxMaracasRenderImageManagementPanel::Rotate int:scaleX = %d \n",x); //printf("wxMaracasRenderImageManagementPanel::Rotate int:scaleY = %d \n", y); //printf("wxMaracasRenderImageManagementPanel::Rotate int:scaleZ = %d \n", z); Refresh(); }*/ /** ** Updates each Matrix **/ void wxMaracasRenderImageTransformation::Refresh()throw(char*) { transformV->Update(); transformS1->Update(); transformS2->Update(); transformS3->Update(); vol->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); //vol->getRenderer()->Render(); surface1->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); //surface1->getRenderer()->Render(); surface2->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); //surface2->getRenderer()->Render(); surface3->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); //surface3->getRenderer()->Render(); }