bicotiGeometricalFacade


     Fachada de los objetos Geometrical, comenzaremos dando una descripción de las funciones y luego haremos ejemplos de su uso.

Clases:

bicotiGeometricalFacade
bicotiGeometricalFacade2D
bicotiGeometricalFacade3D


class bicotiGeometricalFacade< class CoordType, class PixelType >


Comentarios Generales:

       Los argumentos template: CoordType y PixelType, corresponden al tipo de coordenada a utilizar y al tipo pixel a utilizar. Uno pensaría que en CoordType se podría poner cualquier Coordinate, no es así el algoritmo esta pensado para que se trabaje con coordenadas reales, o sea,
para bicotiCoordiante2D< REAL > o bicotiCoordinate3D< REAL >, esto es porque las coordenadas hacen referencia a ubicaciones en la implementación de la imagen, ya no como imagen "discreta", sino como imagen "continua". Para conocer mas sobre PixelType ir a Pixels.


Protected Methods

bicotiImageDescriptor * SizeImaDest( )

Public Methods

virtual ~bicotiGeometricalFacade( )

virtual void BuildAffimTransformation( ) = 0
virtual void BuildRotation( double ) = 0

virtual void Apply( ) = 0

virtual void UsePixelInterpolatorLinear( ) = 0
virtual void UsePixelInterpolatorLagrange( ) = 0

bicotiMatrix2D< double >& Matrix( )
CoordType& Vector( )
CoordType& RotationCenter( )

bicotiImageImplementation< PixelType > * GetResult( )
bicotiImageImplementation< PixelType > * LoadResult( )



bicotiImageDescriptor * SizeImaDest( )

        Retorna un Descriptor para redimensionar una imagen según el tipo de transformación afin a
        realizar.



virtual ~bicotiGeometricalFacade( )

         Destructor virtual de la clase.



virtual void BuildAffimTransformation( ) = 0

          Construye una transformación afin.



virtual void BuildRotation( double ) = 0

           Crea una rotación( caso particular de transformacón affim ) generando la matriz T y el vector b
           adecuados.
           Para definir una rotación siempre hay que pasar un ángulo y un punto( centro de rotación ). Al
           centro de rotación se accede mediante la función RotationCenter( ), al ángulo se pasa
           como parámetro de esta función.
           El ángulo se expresa en radianes y se mide en sentido antihorario, otra restricción mas es que este
           debe estar entre -pi y pi.



virtual void ApplyAffinTransformation( ) = 0

          Ejecuta la transformación afin.



virtual void UsePixelInterpolatorLinear( ) = 0

          Realiza los algoritmos con el interpolador lineal, según la dimensión será
         bicotiImagePixelInterpolator2DLinear o bicotiImagePixelInterpolator3DLinear.



virtual void UsePixelInterpolatorLagrange( ) = 0

          Realiza los algoritmos con el interpolador lineal, según la dimensión será
         bicotiImagePixelInterpolator2DLagrange o bicotiImagePixelInterpolator3DLagrange.



bicotiMatrix2D< double >& Matrix( )

          Para definir una transformación afin hay que definir una matriz( invertible ) y un vector, ver
         bicotiAffinTransformation. Mediante esta función se puede pasar o leer la matriz
          ( bicotiMatrix2D< double > ) a utilizar en el algoritmo.



CoordType& Vector( )

         Para definir una transformación afin hay que definir una matrix( invertible ) y un vector, ver
         bicotiAffinTransformation.Mediante esta función se puede pasar o leer el vector que intervieneen
          el algoritmo, este será un CoordType( argumento template que como ya mencionamos será
         bicotiCoordinate2D< REAL > o bicotiCoordinate3D< REAL > según la dimensión con la que se este
          trabajando).



CoordType& RotationCenter( )

           En el caso particular de que la transformación afin sea una rotación, hay que pasar un punto como
           centro de rotación, mediante esta función se puede pasar este parámetro CoordType( argumento
           template que como ya mencionamos será bicotiCoordinate2D< REAL > o
         bicotiCoordinate3D< REAL > según la dimensión con la que se este trabajando).



bicotiImageImplementation< PixelType > * GetResult( )

         Retorna el resultado de los Algorimos, ver los casos particulares para saber si l reultado es
          un bicotiImageImplementation2D o bicotiImageImplementation3D.



bicotiImageImplementation< PixelType > * LoadResult( )

         Esta función hay que considerarla con cuidado, retorna el resultado como la función anterior, pero
          se pone este resultado como la próxima imagen fuente( imagen a aplicar los algoritmos ). Recordar
          que se pide memoria al realizar los algoritmos y si se pierde la referencia a las imagenes no hay
          forma de  devolverla, en particular tener cuidado con el resultado de cortes en 3D, el resultado es
          una imagen 2D y las imagenes fuente son 3D.