soma-io 6.0.6
soma::AffineTransformation3dBase Class Reference

Affine 3D transformation. More...

#include <soma-io/transformation/affinetransformation3d_base.h>

Inheritance diagram for soma::AffineTransformation3dBase:
Collaboration diagram for soma::AffineTransformation3dBase:

Public Member Functions

 AffineTransformation3dBase ()
 Create an identity transformation.
 
 AffineTransformation3dBase (const AffineTransformation3dBase &other)
 
 AffineTransformation3dBase (const std::vector< float > &mat)
 Create a AffineTransformation3d from a 4x4 matrix given as a line vector.
 
 AffineTransformation3dBase (const carto::Object mat)
 Create a AffineTransformation3d from a 4x4 matrix given as a line vector in an Object.
 
virtual ~AffineTransformation3dBase ()
 
virtual AffineTransformation3dBaseoperator= (const AffineTransformation3dBase &other)
 
virtual AffineTransformation3dBaseoperator= (const std::vector< float > &other)
 
virtual AffineTransformation3dBaseoperator= (const carto::Object other)
 
AffineTransformation3dBaseoperator*= (const AffineTransformation3dBase &trans)
 
AffineTransformation3dBase operator- () const
 
virtual bool operator== (const AffineTransformation3dBase &) const
 
virtual void extendOrder (unsigned n)
 
Point3dd transform (double x, double y, double z) const
 
Point3dd transform (const Point3dd &pos) const
 
Point3df transform (const Point3df &pos) const
 
Point3df transform (float x, float y, float z) const
 
Point3d transform (const Point3d &p) const
 
Point3di transform (const Point3di &p) const
 
Point3di transform (int x, int y, int z) const
 
virtual std::vector< double > transform (const std::vector< double > &pos) const
 
virtual std::vector< float > transform (const std::vector< float > &pos) const
 
virtual std::vector< int > transform (const std::vector< int > &pos) const
 
Point3dd transformVector (const Point3dd &vec) const
 
Point3df transformVector (const Point3df &dir) const
 
Point3df transformVector (const Point3di &dir) const
 
Point3dd transformVector (double x, double y, double z) const
 
Point3df transformVector (float x, float y, float z) const
 
Point3di transformVector (int x, int y, int z) const
 
virtual std::vector< double > transformVector (const std::vector< double > &pos) const
 
virtual std::vector< float > transformVector (const std::vector< float > &pos) const
 
virtual std::vector< int > transformVector (const std::vector< int > &pos) const
 
Point3dd transformNormal (const Point3dd &dir) const
 
Point3df transformNormal (const Point3df &dir) const
 
Point3dd transformNormal (double x, double y, double z) const
 
Point3df transformNormal (float x, float y, float z) const
 
Point3dd transformUnitNormal (const Point3dd &dir) const
 
Point3df transformUnitNormal (const Point3df &dir) const
 
Point3dd transformUnitNormal (double x, double y, double z) const
 
Point3df transformUnitNormal (float x, float y, float z) const
 
bool isIdentity () const CARTO_OVERRIDE
 Test if the transformation can safely be omitted.
 
virtual void setToIdentity ()
 
std::unique_ptr< AffineTransformation3dBaseinverse () const
 
bool invertible () const CARTO_OVERRIDE
 Test if the transformation can be inverted.
 
std::unique_ptr< TransformationgetInverse () const CARTO_OVERRIDE
 Obtain the inverse transformation.
 
virtual void scale (const Point3df &sizeFrom, const Point3df &sizeTo)
 
void setTranslation (Point3df trans)
 
void fromColumnVector (const float *vec)
 transform a column vector to an AffineTransformation3d (useful for conversions from OpenGL matrices)
 
- Public Member Functions inherited from soma::Transformation3d
virtual ~Transformation3d ()
 
Point3dd transform (double x, double y, double z) const
 
Point3dd transform (const Point3dd &pos) const
 
Point3df transform (const Point3df &dir) const
 
Point3df transform (float x, float y, float z) const
 
Point3d transform (const Point3d &p) const
 
Point3di transform (const Point3di &p) const
 
Point3di transform (int x, int y, int z) const
 
- Public Member Functions inherited from soma::Transformation
virtual ~Transformation ()
 
virtual Transformationoperator= (const Transformation &other)
 
carto::Object header ()
 
const carto::Object header () const
 
void setHeader (carto::Object ph)
 
- Public Member Functions inherited from carto::RCObject
 RCObject ()
 
 RCObject (const RCObject &)
 
RCObjectoperator= (const RCObject &)
 
virtual ~RCObject ()
 
- Public Member Functions inherited from soma::AffineTransformationBase
 AffineTransformationBase (int order=3)
 
 AffineTransformationBase (const AffineTransformationBase &other)
 
 AffineTransformationBase (const std::vector< float > &mat)
 Create a AffineTransformation3d from a matrix given as a line vector.
 
 AffineTransformationBase (const carto::Object mat)
 Create a AffineTransformation from a NxN matrix given as a line vector in an Object.
 
virtual ~AffineTransformationBase ()
 
virtual AffineTransformationBaseoperator= (const AffineTransformationBase &other)
 
virtual bool operator== (const AffineTransformationBase &) const
 
AffineTransformationBaseoperator*= (const AffineTransformationBase &trans)
 
AffineTransformationBase operator- () const
 
void negate ()
 
bool isIdentity () const CARTO_OVERRIDE
 Test if the transformation can safely be omitted.
 
bool isDirect () const override
 true if the transformation is direct, false if it changes orientation
 
bool invertible () const CARTO_OVERRIDE
 Test if the transformation can be inverted.
 
std::unique_ptr< AffineTransformationBaseinverse () const
 
std::unique_ptr< TransformationgetInverse () const CARTO_OVERRIDE
 Obtain the inverse transformation.
 
int order () const
 
virtual void squeezeOrder (unsigned n, bool check=true, bool notify_fail=true)
 
Table< float > & matrix ()
 
const Table< float > & matrix () const
 
std::vector< float > toVector () const
 conversions and IO)
 
std::vector< float > toColumnVector () const
 transform AffineTransformation3d to a column vector (useful for conversions to OpenGL matrices)
 
void fromColumnVector (const std::vector< float > &vec)
 transform a column vector to an AffineTransformation3d (useful for conversions from OpenGL matrices)
 
void fromColumnVector (const float *vec, unsigned size)
 transform a column vector to an AffineTransformation3d (useful for conversions from OpenGL matrices)
 

Protected Member Functions

Point3dd transformDouble (double x, double y, double z) const CARTO_OVERRIDE
 
Point3df transformFloat (float x, float y, float z) const CARTO_OVERRIDE
 
Point3di transformInt (int x, int y, int z) const CARTO_OVERRIDE
 
virtual Point3dd transformVectorPoint3dd (const Point3dd &vec) const
 
virtual Point3df transformVectorPoint3df (const Point3df &dir) const
 
virtual Point3dd transformVectorDouble (double x, double y, double z) const
 
virtual Point3df transformVectorFloat (float x, float y, float z) const
 
virtual Point3di transformVectorInt (int x, int y, int z) const
 
virtual Point3dd transformNormalPoint3dd (const Point3dd &dir) const
 
virtual Point3df transformNormalPoint3df (const Point3df &dir) const
 
virtual Point3dd transformNormalDouble (double x, double y, double z) const
 
virtual Point3df transformNormalFloat (float x, float y, float z) const
 
- Protected Member Functions inherited from soma::Transformation3d
 Transformation3d ()
 
virtual Point3dd transformPoint3dd (const Point3dd &pos) const
 
virtual Point3df transformPoint3df (const Point3df &dir) const
 
virtual Point3d transformPoint3d (const Point3d &p) const
 
virtual Point3di transformPoint3di (const Point3di &p) const
 
- Protected Member Functions inherited from soma::Transformation
 Transformation ()
 

Additional Inherited Members

- Public Types inherited from carto::RCObject
typedef int RefCounterType
 
- Static Public Member Functions inherited from soma::Transformation
template<typename T>
static std::vector< T > vadd (const std::vector< T > &v1, const std::vector< T > &v2)
 vector arithmetics, as convenience static functions
 
template<typename T>
static std::vector< T > vsub (const std::vector< T > &v1, const std::vector< T > &v2)
 vector arithmetics, as convenience static functions
 
template<typename T>
static std::vector< T > vadd (const std::vector< T > &v1, const T &v2)
 vector arithmetics, as convenience static functions
 
template<typename T>
static std::vector< T > vsub (const std::vector< T > &v1, const T &v2)
 vector arithmetics, as convenience static functions
 
template<typename T>
static std::vector< T > vadd (const T &v1, const std::vector< T > &v2)
 vector arithmetics, as convenience static functions
 
template<typename T>
static std::vector< T > vsub (const T &v1, const std::vector< T > &v2)
 vector arithmetics, as convenience static functions
 
- Static Public Attributes inherited from soma::AffineTransformationBase
static float epsilon
 used to test equality on elements
 
- Protected Attributes inherited from soma::Transformation
carto::Object _header
 
- Protected Attributes inherited from soma::AffineTransformationBase
Table< float > _matrix
 

Detailed Description

Affine 3D transformation.

A new transformation classes tree has been setup to allow non-linear transformations: see Transformation and Transformation3d. AffineTransformation3d now inherits Transformation3d.

  • there are now several overloaded transform() methods taking double, or float numbers, or Point3df or Point3dd arguments. As there were formerly only float and Point3df arguments, ambiguities may raise from calling them with mixed double/float arguments
  • the base aims::Transformation class introduces a name ambiguity with anatomist anatomist::Transformation class, so it now requires to handle namespaces carefully.

Definition at line 182 of file affinetransformation3d_base.h.

Constructor & Destructor Documentation

◆ AffineTransformation3dBase() [1/4]

soma::AffineTransformation3dBase::AffineTransformation3dBase ( )

◆ AffineTransformation3dBase() [2/4]

soma::AffineTransformation3dBase::AffineTransformation3dBase ( const AffineTransformation3dBase & other)

◆ AffineTransformation3dBase() [3/4]

soma::AffineTransformation3dBase::AffineTransformation3dBase ( const std::vector< float > & mat)

Create a AffineTransformation3d from a 4x4 matrix given as a line vector.

◆ AffineTransformation3dBase() [4/4]

soma::AffineTransformation3dBase::AffineTransformation3dBase ( const carto::Object mat)

Create a AffineTransformation3d from a 4x4 matrix given as a line vector in an Object.

◆ ~AffineTransformation3dBase()

virtual soma::AffineTransformation3dBase::~AffineTransformation3dBase ( )
virtual

Member Function Documentation

◆ extendOrder()

virtual void soma::AffineTransformation3dBase::extendOrder ( unsigned n)
virtual

Reimplemented from soma::AffineTransformationBase.

◆ fromColumnVector()

void soma::AffineTransformation3dBase::fromColumnVector ( const float * vec)

transform a column vector to an AffineTransformation3d (useful for conversions from OpenGL matrices)

References fromColumnVector().

Referenced by fromColumnVector().

◆ getInverse()

std::unique_ptr< Transformation > soma::AffineTransformation3dBase::getInverse ( ) const
virtual

Obtain the inverse transformation.

This method should only be called if invertible() returns true. Otherwise, it will throw an exception if the transformation is not actually invertible.

Reimplemented from soma::Transformation.

References getInverse().

Referenced by getInverse().

◆ inverse()

std::unique_ptr< AffineTransformation3dBase > soma::AffineTransformation3dBase::inverse ( ) const

References AffineTransformation3dBase(), and inverse().

Referenced by inverse().

◆ invertible()

bool soma::AffineTransformation3dBase::invertible ( ) const
virtual

Test if the transformation can be inverted.

getInverse() can be called if this method returns true, in order to obtain the inverse transformation.

Reimplemented from soma::Transformation.

References invertible().

Referenced by invertible().

◆ isIdentity()

bool soma::AffineTransformation3dBase::isIdentity ( ) const
virtual

Test if the transformation can safely be omitted.

This method returns true only if the transformation behaves exactly like an identity transformation (notably, the transform methods will always return the input coordinates unchanged).

Note
{Implementors of derived classes may choose to always return false if a test would be difficult to implement or expensive to run. As a result, a false result does not guarantee in general that the transformation is different from identity.}

Reimplemented from soma::Transformation.

◆ operator*=()

AffineTransformation3dBase & soma::AffineTransformation3dBase::operator*= ( const AffineTransformation3dBase & trans)

◆ operator-()

AffineTransformation3dBase soma::AffineTransformation3dBase::operator- ( ) const

◆ operator=() [1/3]

virtual AffineTransformation3dBase & soma::AffineTransformation3dBase::operator= ( const AffineTransformation3dBase & other)
virtual

◆ operator=() [2/3]

virtual AffineTransformation3dBase & soma::AffineTransformation3dBase::operator= ( const carto::Object other)
virtual

◆ operator=() [3/3]

virtual AffineTransformation3dBase & soma::AffineTransformation3dBase::operator= ( const std::vector< float > & other)
virtual

◆ operator==()

virtual bool soma::AffineTransformation3dBase::operator== ( const AffineTransformation3dBase & ) const
virtual

◆ scale()

virtual void soma::AffineTransformation3dBase::scale ( const Point3df & sizeFrom,
const Point3df & sizeTo )
virtual

References scale().

Referenced by scale().

◆ setToIdentity()

virtual void soma::AffineTransformation3dBase::setToIdentity ( )
virtual

Reimplemented from soma::AffineTransformationBase.

References setToIdentity().

Referenced by setToIdentity().

◆ setTranslation()

void soma::AffineTransformation3dBase::setTranslation ( Point3df trans)

References setTranslation().

Referenced by setTranslation().

◆ transform() [1/10]

Point3d soma::AffineTransformation3dBase::transform ( const Point3d & p) const
inline

◆ transform() [2/10]

Point3dd soma::AffineTransformation3dBase::transform ( const Point3dd & pos) const
inline

◆ transform() [3/10]

Point3df soma::AffineTransformation3dBase::transform ( const Point3df & pos) const
inline

◆ transform() [4/10]

Point3di soma::AffineTransformation3dBase::transform ( const Point3di & p) const
inline

◆ transform() [5/10]

virtual std::vector< double > soma::AffineTransformation3dBase::transform ( const std::vector< double > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 225 of file affinetransformation3d_base.h.

References soma::AffineTransformationBase::transform().

◆ transform() [6/10]

virtual std::vector< float > soma::AffineTransformation3dBase::transform ( const std::vector< float > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 228 of file affinetransformation3d_base.h.

References soma::Transformation::transform().

◆ transform() [7/10]

virtual std::vector< int > soma::AffineTransformation3dBase::transform ( const std::vector< int > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 230 of file affinetransformation3d_base.h.

References soma::Transformation::transform().

◆ transform() [8/10]

Point3dd soma::AffineTransformation3dBase::transform ( double x,
double y,
double z ) const
inline

◆ transform() [9/10]

Point3df soma::AffineTransformation3dBase::transform ( float x,
float y,
float z ) const
inline

◆ transform() [10/10]

Point3di soma::AffineTransformation3dBase::transform ( int x,
int y,
int z ) const
inline

◆ transformDouble()

Point3dd soma::AffineTransformation3dBase::transformDouble ( double x,
double y,
double z ) const
protectedvirtual

Implements soma::Transformation3d.

References transformDouble().

Referenced by transformDouble().

◆ transformFloat()

Point3df soma::AffineTransformation3dBase::transformFloat ( float x,
float y,
float z ) const
protectedvirtual

Reimplemented from soma::Transformation3d.

References transformFloat().

Referenced by transformFloat().

◆ transformInt()

Point3di soma::AffineTransformation3dBase::transformInt ( int x,
int y,
int z ) const
protectedvirtual

◆ transformNormal() [1/4]

◆ transformNormal() [2/4]

Point3df soma::AffineTransformation3dBase::transformNormal ( const Point3df & dir) const
inline

Definition at line 394 of file affinetransformation3d_base.h.

References transformNormal(), and transformNormalPoint3df().

◆ transformNormal() [3/4]

Point3dd soma::AffineTransformation3dBase::transformNormal ( double x,
double y,
double z ) const
inline

Definition at line 380 of file affinetransformation3d_base.h.

References transformNormal(), and transformNormalDouble().

◆ transformNormal() [4/4]

Point3df soma::AffineTransformation3dBase::transformNormal ( float x,
float y,
float z ) const
inline

Definition at line 387 of file affinetransformation3d_base.h.

References transformNormal(), and transformNormalFloat().

◆ transformNormalDouble()

virtual Point3dd soma::AffineTransformation3dBase::transformNormalDouble ( double x,
double y,
double z ) const
protectedvirtual

◆ transformNormalFloat()

Point3df soma::AffineTransformation3dBase::transformNormalFloat ( float x,
float y,
float z ) const
inlineprotectedvirtual

Definition at line 439 of file affinetransformation3d_base.h.

References transformNormal().

Referenced by transformNormal(), and transformNormalDouble().

◆ transformNormalPoint3dd()

Point3dd soma::AffineTransformation3dBase::transformNormalPoint3dd ( const Point3dd & dir) const
inlineprotectedvirtual

◆ transformNormalPoint3df()

Point3df soma::AffineTransformation3dBase::transformNormalPoint3df ( const Point3df & dir) const
inlineprotectedvirtual

◆ transformUnitNormal() [1/4]

Point3dd soma::AffineTransformation3dBase::transformUnitNormal ( const Point3dd & dir) const
inline

◆ transformUnitNormal() [2/4]

Point3df soma::AffineTransformation3dBase::transformUnitNormal ( const Point3df & dir) const
inline

Definition at line 458 of file affinetransformation3d_base.h.

References transformUnitNormal().

◆ transformUnitNormal() [3/4]

Point3dd soma::AffineTransformation3dBase::transformUnitNormal ( double x,
double y,
double z ) const
inline

Definition at line 450 of file affinetransformation3d_base.h.

References transformNormal().

◆ transformUnitNormal() [4/4]

Point3df soma::AffineTransformation3dBase::transformUnitNormal ( float x,
float y,
float z ) const
inline

Definition at line 476 of file affinetransformation3d_base.h.

References transformUnitNormal().

◆ transformVector() [1/9]

◆ transformVector() [2/9]

Point3df soma::AffineTransformation3dBase::transformVector ( const Point3df & dir) const
inline

Definition at line 327 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorPoint3df().

◆ transformVector() [3/9]

Point3df soma::AffineTransformation3dBase::transformVector ( const Point3di & dir) const

◆ transformVector() [4/9]

std::vector< double > soma::AffineTransformation3dBase::transformVector ( const std::vector< double > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 341 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorDouble().

◆ transformVector() [5/9]

std::vector< float > soma::AffineTransformation3dBase::transformVector ( const std::vector< float > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 354 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorFloat().

◆ transformVector() [6/9]

std::vector< int > soma::AffineTransformation3dBase::transformVector ( const std::vector< int > & pos) const
inlinevirtual

Reimplemented from soma::Transformation3d.

Definition at line 367 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorInt().

◆ transformVector() [7/9]

Point3dd soma::AffineTransformation3dBase::transformVector ( double x,
double y,
double z ) const
inline

◆ transformVector() [8/9]

Point3df soma::AffineTransformation3dBase::transformVector ( float x,
float y,
float z ) const
inline

Definition at line 313 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorFloat().

◆ transformVector() [9/9]

Point3di soma::AffineTransformation3dBase::transformVector ( int x,
int y,
int z ) const
inline

Definition at line 320 of file affinetransformation3d_base.h.

References transformVector(), and transformVectorInt().

◆ transformVectorDouble()

virtual Point3dd soma::AffineTransformation3dBase::transformVectorDouble ( double x,
double y,
double z ) const
protectedvirtual

◆ transformVectorFloat()

virtual Point3df soma::AffineTransformation3dBase::transformVectorFloat ( float x,
float y,
float z ) const
protectedvirtual

◆ transformVectorInt()

virtual Point3di soma::AffineTransformation3dBase::transformVectorInt ( int x,
int y,
int z ) const
protectedvirtual

◆ transformVectorPoint3dd()

Point3dd soma::AffineTransformation3dBase::transformVectorPoint3dd ( const Point3dd & vec) const
inlineprotectedvirtual

◆ transformVectorPoint3df()

Point3df soma::AffineTransformation3dBase::transformVectorPoint3df ( const Point3df & dir) const
inlineprotectedvirtual

The documentation for this class was generated from the following file: