#include "bbvtkTransform.h" #include "bbvtkPackage.h" namespace bbvtk { BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,Transform); BBTK_BLACK_BOX_IMPLEMENTATION(Transform,bbtk::AtomicBlackBox); // -------------------------------------------------------------- void Transform::bbUserSetDefaultValues() { bbSetInputIn(NULL); vecScale.push_back(1); // scale x vecScale.push_back(1); // scale y vecScale.push_back(1); // scale z bbSetInputScale(vecScale); vecRotateWXYZ.push_back(0); //angle vecRotateWXYZ.push_back(1); //vx vecRotateWXYZ.push_back(0); //vy vecRotateWXYZ.push_back(0); //vz bbSetInputRotateWXYZ(vecRotateWXYZ); vecTranslate.push_back(0); //tx vecTranslate.push_back(0); //ty vecTranslate.push_back(0); //tz bbSetInputTranslate(vecTranslate); vecSpacing.push_back(1); //spacing x vecSpacing.push_back(1); //spacing y vecSpacing.push_back(1); //spacing z bbSetInputTranslate(vecSpacing); result = NULL; } // -------------------------------------------------------------- void Transform::bbUserInitializeProcessing() { bbUserFinalizeProcessing(); result = vtkTransform::New(); } // -------------------------------------------------------------- void Transform::bbUserFinalizeProcessing() { if (result!=NULL) { result->Delete(); result=NULL; } } // -------------------------------------------------------------- void Transform::Process() { printf("EED %p Transform::Process() 1\n", this); bbUserInitializeProcessing(); if (bbGetInputIn()!=NULL) { result->Concatenate( bbGetInputIn()->GetMatrix() ); printf("EED %p Transform::Process() 2\n", this); } if (bbGetInputScale().size()>=3) { result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]); printf("EED %p Transform::Process() 3\n", this); } if ((bbGetInputTranslate().size()>=3) && (bbGetInputSpacing().size()>=3)) { double tx = bbGetInputTranslate()[0] * bbGetInputSpacing()[0]; double ty = bbGetInputTranslate()[1] * bbGetInputSpacing()[1]; double tz = bbGetInputTranslate()[2] * bbGetInputSpacing()[2]; result->Translate(tx,ty,tz); printf("EED %p Transform::Process() 4\n", this); } if (bbGetInputRotateWXYZ().size()>=4) { result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]); printf("EED %p Transform::Process() 5\n", this); } result->Update(); printf("EED %p Transform::Process() 6\n", this); bbSetOutputOut(result); } } // EO namespace bbvtk