#include "vnl/vnl_math.h"
template< class TInput, class TOutput>
class RotateVectors
{
public:
RotateVectors() {};
~RotateVectors() {};
{
return false;
}
bool operator==(
const RotateVectors & other )
const
{
return !(*this != other);
}
inline TOutput operator()( const TInput & A ) const
{
v[0] = A[0];
v[1] = A[1];
TransformType::Pointer transform = TransformType::New();
VectorType outputV = transform->TransformVector(v);
TOutput transformedVector;
transformedVector.SetSize(2);
transformedVector[0] = outputV[0];
transformedVector[1] = outputV[1];
return transformedVector;
}
};
int main(int, char *[])
{
start[0] = 0;
start[1] = 0;
size[0] = 2;
size[1] = 3;
region.SetIndex(start);
ImageType::Pointer image = ImageType::New();
image->SetRegions(region);
image->SetVectorLength(2);
image->Allocate();
pixelIndex[0] = 1;
pixelIndex[1] = 1;
v.SetSize(2);
v[0] = 1;
v[1] = 0;
image->SetPixel(pixelIndex, v);
RotateVectors<
ImageType::PixelType,
ImageType::PixelType> >;
FilterType::Pointer filter = FilterType::New();
filter->SetInput(image);
filter->Update();
ImageType::PixelType inputPixelValue = image->GetPixel(pixelIndex);
ImageType::PixelType outputPixelValue = filter->GetOutput()->GetPixel(pixelIndex);
std::cout << "pixel (1,1) was = " << inputPixelValue << std::endl;
std::cout << "pixel (1,1) now = " << outputPixelValue << std::endl;
return EXIT_SUCCESS;
}