ImFusion SDK 4.3
ScaledIso3 Struct Reference

#include <AnatomyPlugin/include/ImFusion/AnatomyPlugin/ScaledIso3.h>

Class for representing uniformly scaled elements of E(3), where E(3) is the Euclidean group, i.e linear transformations that are isometries on R^3 Strictly speaking, such transformations are defined by a scaling (around the origin), translation, and a rotation around the origin. More...

Detailed Description

Class for representing uniformly scaled elements of E(3), where E(3) is the Euclidean group, i.e linear transformations that are isometries on R^3 Strictly speaking, such transformations are defined by a scaling (around the origin), translation, and a rotation around the origin.

However, if we do not know the location of the object, it becomes hard to separate the effects of rotation and translation; a small rotation around the origin is equivalent to a large translation far away together with a small rotation there. Since conceptually we do not want to treat a small rotation around a far-away point like a large translation, it becomes necessary to not only store the (affine) transformation but also some kind of center point.

This center point is stored together with the transformation.

Mathematically, the transformation defined by a ScaledIso3 object is given by first scaling, then rotation, and then translation. i.e. total = translation * rotation * scaling where both the rotation and scaling is around a fixed center point defined at construction. For translation only, the center point is irrelevant and may therefore be left unspecified.

Public Member Functions

 ScaledIso3 (const std::optional< vec3 > &center)
 
 ScaledIso3 (const vec3 &centerPoint, const mat3 &orthogonal, const vec3 &translation, double scale)
 
void recenter (const vec3 &newCenter)
 
mat4 scaleMat () const
 
mat4 transMat () const
 
mat4 rotationMat () const
 
ScaledIso3 inverse () const
 
mat3 linearPart () const
 
ScaledIso3 operator* (const ScaledIso3 &other) const
 
vec3 operator* (const vec3 &other) const
 
ScaledIso3 conjugate (const ScaledIso3 &g) const
 
mat4 toMatrix () const
 
mat3 & orthogonal ()
 
const mat3 & orthogonal () const
 
vec3 & translation ()
 
const vec3 & translation () const
 
double & scale ()
 
const double & scale () const
 
const std::optional< vec3 > & center () const
 
void setCenter (const vec3 &center)
 

Static Public Member Functions

static ScaledIso3 identity ()
 

The documentation for this struct was generated from the following file:
Search Tab / S to search, Esc to close