/*============================================================================= NOTE: THIS FILE IS A HANDMADE WRAPPER FOR THE ManagedITK PROJECT. Project: ManagedITK Program: Insight Segmentation & Registration Toolkit Module: itkManagedTransform.cxx Language: C++/CLI Author: Dan Mueller $Date: 2007-04-11 16:26:16 +1000 (Wed, 11 Apr 2007) $ $Revision: 128 $ Copyright (c) Queensland University of Technology (QUT) 2007. All rights reserved. Portions of this code are covered under the ITK and VTK copyright. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. See VTKCopyright.txt or http://www.kitware.com/VTKCopyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =============================================================================*/ #pragma once #pragma warning( disable : 4635 ) // Disable warnings about XML doc comments #ifndef __itkManagedTransform_cxx #define __itkManagedTransform_cxx // Include some useful ManagedITK files #include "itkManagedObject.cxx" #include "itkManagedArray.cxx" #include "itkManagedPoint.cxx" #include "itkManagedVector.cxx" // Use some managed namespaces #using #using using namespace System; using namespace System::IO; using namespace System::Reflection; using namespace System::Diagnostics; using namespace System::Collections::Generic; namespace itk { /// ///This abstract class is a managed replacement for itk::Transform. /// /// ///Transform points and vector from an input space to an output space. /// ///This abstract class define the generic interface for a geometrical ///transformation from one space to another. The class provides methods ///for mapping points, vectors and covariant vectors from the input space ///to the output space. /// ///Given that transformation are not necesarily invertible, this basic class ///does not provide the methods for back transfromation. Back transform ///methods are implemented in derived classes where appropriate. /// public ref class itkTransform abstract : itkObject { public: ///Get the number of parameters that completely define the Transfom. property unsigned int NumberOfParameters { virtual unsigned int get() = 0; } ///Get/set the transformation parameters. property itkArray^ Parameters { virtual itkArray^ get() = 0; virtual void set( itkArray^ parameters ) = 0; } ///Return the inverse of the transform. ///The managed instance to become the inverse transform. ///True if the inverse exists, false otherwise. virtual bool GetInverse(itkTransform^ inverse) = 0; ///Apply the transform to a point, mapping it from the input to the output space. ///The point to transform. ///A new instance of the transformed point. virtual itkPoint^ TransformPoint( itkPoint^ point ) = 0; ///Apply the transform to a vector, mapping it from the input to the output space. ///The vector to transform. ///A new instance of the transformed point. virtual itkVector^ TransformVector( itkVector^ vector ) = 0; }; // end ref class } // end namespace itk #endif