00001 #ifndef _DEF_TRANSLATION_TXX
00002 #define _DEF_TRANSLATION_TXX
00003
00004 #include "Def_Translation.h"
00005
00006 namespace mial
00007 {
00008
00009 template<class DataType,int nDims,class MType, class VType>
00010 Def_Translation<DataType, nDims,MType,VType>
00011 ::Def_Translation()
00012 {
00013 this->name = "Def_Translation";
00014 }
00015
00016
00017 template<class DataType,int nDims,class MType, class VType>
00018 bool Def_Translation<DataType, nDims,MType,VType>
00019 ::run(typename Deformation<DataType,nDims>::deformationIn* i,typename Deformation<DataType,nDims>::DefArgSet* org, std::stringstream *s)
00020 {
00021 DefArgSet* orgUp = reinterpret_cast<DefArgSet *>(org);
00022 typename deformationIn::Pointer in;
00023 if(i !=NULL && s != NULL)
00024 {
00025 Error e;
00026 e.msg = "Only one of struct or stream input may be provided.";
00027 e.name = "Def_TranslateAll";
00028 throw e;
00029 }
00030 else if(i !=NULL)
00031 in = reinterpret_cast<deformationIn *>(i);
00032 else if( s!= NULL)
00033 {
00034 in = deformationIn::New();
00035 in->fillFromStream(*s);
00036 }
00037 else
00038 {
00039 Error e;
00040 e.msg = "Either struct or stream input must be provided.";
00041 e.name = "Def_TranslateAll";
00042 throw e;
00043 }
00044 VType magVec(nDims);
00045 magVec.fill(0);
00046
00047 int numNodes = orgUp->nodesF->rows();
00048 for( unsigned int i=0; i<nDims; i++ )
00049 {
00050 magVec(i) = in->amplitude[i];
00051
00052 }
00053
00054 for( unsigned int i=0; i<numNodes; i++ )
00055 {
00056
00057 orgUp->nodesV->set_row(i,magVec);
00058 }
00059
00060 return false;
00061 }
00062
00063 }
00064
00065 #endif