#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::Process() { if (result!=NULL) { result->Delete(); } result = vtkTransform::New(); if (bbGetInputIn()!=NULL) { result->Concatenate( bbGetInputIn()->GetMatrix() ); } if (bbGetInputScale().size()>=3) { result->Scale(bbGetInputScale()[0], bbGetInputScale()[1], bbGetInputScale()[2]); } 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); } if (bbGetInputRotateWXYZ().size()>=4) { result->RotateWXYZ(bbGetInputRotateWXYZ()[0],bbGetInputRotateWXYZ()[1], bbGetInputRotateWXYZ()[2], bbGetInputRotateWXYZ()[3]); } result->Update(); bbSetOutputOut(result); } void Transform::bbUserConstructor() { 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::bbUserCopyConstructor() { } void Transform::bbUserDestructor() { } } // EO namespace bbvtk