Omnidome
Fulldome Mapping Software Toolkit
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Attributes | Friends
omni::geometry::AffineTransform Class Reference

An affine linear transform with rotation, scale and translation. More...

#include <AffineTransform.h>

Collaboration diagram for omni::geometry::AffineTransform:
Collaboration graph
[legend]

Public Member Functions

 AffineTransform ()
 
EulerAnglesrotation ()
 Return ref to rotation angles. More...
 
EulerAngles const & rotation () const
 Return const ref to rotation angles. More...
 
void setRotation (EulerAngles const &)
 Set new rotation angles. More...
 
QVector3D scale () const
 Return scale vector. More...
 
float uniformScale () const
 Return scale factor. More...
 
void setScale (QVector3D const &)
 Set new scale vector. More...
 
void setScale (float)
 Set uniform value for scale. More...
 
QVector3D & translation ()
 Return reference to translation vector. More...
 
QVector3D const & translation () const
 Return reference to translation vector (const) More...
 
void setTranslation (QVector3D const &)
 Set new translation vector. More...
 
QMatrix4x4 matrix () const
 Calculate transformation matrix. More...
 
QMatrix4x4 matrix (QVector3D const &_center) const
 Calculate matrix for transformation around a center point. More...
 
bool rotationEnabled () const
 Return true if rotation is enabled. More...
 
void setRotationEnabled (bool)
 Enable or disable rotation. More...
 
bool scaleEnabled () const
 Return true if scaling is enabled. More...
 
bool uniformScaleEnabled () const
 Return true if scaling is uniform (means scaling is equal for xyz) More...
 
void setUniformScaleEnabled (bool)
 Set whether scaling is uniform. More...
 
void setScaleEnabled (bool)
 Enable or disable scale. More...
 
bool translationEnabled () const
 Return true if translation is enabled. More...
 
void setTranslationEnabled (bool)
 Enable or disable translation. More...
 
void toStream (QDataStream &) const
 Write transformation to stream. More...
 
void fromStream (QDataStream &)
 Read transformation from stream. More...
 

Private Attributes

bool rotationEnabled_ = true
 
EulerAngles rotation_
 
bool scaleEnabled_ = true
 
bool uniformScaleEnabled_ = false
 
QVector3D scale_
 
float uniformScale_ = 1.0
 
bool translationEnabled_ = true
 
QVector3D translation_
 

Friends

bool operator== (AffineTransform const &, AffineTransform const &)
 Test for equality. More...
 

Detailed Description

An affine linear transform with rotation, scale and translation.

Constructor & Destructor Documentation

omni::geometry::AffineTransform::AffineTransform ( )
27  :
28  scale_(1.0, 1.0, 1.0),
29  translation_(0.0, 0.0, 0.0) {}
QVector3D translation_
Definition: AffineTransform.h:115
QVector3D scale_
Definition: AffineTransform.h:111

Member Function Documentation

void omni::geometry::AffineTransform::fromStream ( QDataStream &  _is)

Read transformation from stream.

149  {
150  PropertyMap _map;
151  _is >> _map;
152  _map.get("rotationEnabled",rotationEnabled_);
153  _map.get("rotation",rotation_);
154  _map.get("scaleEnabled",scaleEnabled_);
155  _map.get("scale",scale_);
156  _map.get("uniformScale",uniformScale_);
157  _map.get("uniformScaleEnabled",uniformScaleEnabled_);
158  _map.get("translationEnabled",translationEnabled_);
159  _map.get("translation",translation_);
160  }
bool rotationEnabled_
Definition: AffineTransform.h:106
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
float uniformScale_
Definition: AffineTransform.h:112
QVector3D translation_
Definition: AffineTransform.h:115
bool translationEnabled_
Definition: AffineTransform.h:114
bool scaleEnabled_
Definition: AffineTransform.h:109
QVector3D scale_
Definition: AffineTransform.h:111
EulerAngles rotation_
Definition: AffineTransform.h:107
QMatrix4x4 omni::geometry::AffineTransform::matrix ( ) const

Calculate transformation matrix.

76  {
77  return matrix(QVector3D(0.0, 0.0, 0.0));
78  }
QMatrix4x4 matrix() const
Calculate transformation matrix.
Definition: AffineTransform.cpp:76
QMatrix4x4 omni::geometry::AffineTransform::matrix ( QVector3D const &  _center) const

Calculate matrix for transformation around a center point.

80  {
81  QMatrix4x4 _m;
82 
83  _m.translate(_center);
84  if (translationEnabled()) _m.translate(translation_);
85  if (rotationEnabled()) _m *= rotation_.matrix();
86  if (scaleEnabled()) {
87  _m.scale(scale());
88 
89  }
90  _m.translate(-_center);
91  return _m;
92  }
bool scaleEnabled() const
Return true if scaling is enabled.
Definition: AffineTransform.cpp:115
QVector3D translation_
Definition: AffineTransform.h:115
QVector3D scale() const
Return scale vector.
Definition: AffineTransform.cpp:43
static QMatrix4x4 matrix(Angle _yaw, Angle _pitch, Angle _roll)
Public Static function to get rotation matrix conveniently.
Definition: EulerAngles.cpp:82
bool translationEnabled() const
Return true if translation is enabled.
Definition: AffineTransform.cpp:125
EulerAngles rotation_
Definition: AffineTransform.h:107
bool rotationEnabled() const
Return true if rotation is enabled.
Definition: AffineTransform.cpp:95
EulerAngles & omni::geometry::AffineTransform::rotation ( )

Return ref to rotation angles.

35  {
36  return rotation_;
37  }
EulerAngles rotation_
Definition: AffineTransform.h:107
EulerAngles const & omni::geometry::AffineTransform::rotation ( ) const

Return const ref to rotation angles.

31  {
32  return rotation_;
33  }
EulerAngles rotation_
Definition: AffineTransform.h:107
bool omni::geometry::AffineTransform::rotationEnabled ( ) const

Return true if rotation is enabled.

95  {
96  return rotationEnabled_;
97  }
bool rotationEnabled_
Definition: AffineTransform.h:106
QVector3D omni::geometry::AffineTransform::scale ( ) const

Return scale vector.

43  {
44  float _s = uniformScale();
45  return uniformScaleEnabled_ ? QVector3D(_s,_s,_s) : scale_;
46  }
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
QVector3D scale_
Definition: AffineTransform.h:111
float uniformScale() const
Return scale factor.
Definition: AffineTransform.cpp:49
bool omni::geometry::AffineTransform::scaleEnabled ( ) const

Return true if scaling is enabled.

115  {
116  return scaleEnabled_;
117  }
bool scaleEnabled_
Definition: AffineTransform.h:109
void omni::geometry::AffineTransform::setRotation ( EulerAngles const &  _rotation)

Set new rotation angles.

39  {
40  rotation_ = _rotation;
41  }
EulerAngles rotation_
Definition: AffineTransform.h:107
void omni::geometry::AffineTransform::setRotationEnabled ( bool  _enabled)

Enable or disable rotation.

100  {
101  rotationEnabled_ = _enabled;
102  }
bool rotationEnabled_
Definition: AffineTransform.h:106
void omni::geometry::AffineTransform::setScale ( QVector3D const &  _scale)

Set new scale vector.

53  {
54  scale_ = _scale;
55  }
QVector3D scale_
Definition: AffineTransform.h:111
void omni::geometry::AffineTransform::setScale ( float  _uniformScale)

Set uniform value for scale.

57  {
58  uniformScale_ = _uniformScale;
59  if (!uniformScaleEnabled_) {
60  scale_ = QVector3D(_uniformScale,_uniformScale,_uniformScale);
61  }
62  }
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
float uniformScale_
Definition: AffineTransform.h:112
QVector3D scale_
Definition: AffineTransform.h:111
void omni::geometry::AffineTransform::setScaleEnabled ( bool  _enabled)

Enable or disable scale.

120  {
121  scaleEnabled_ = _enabled;
122  }
bool scaleEnabled_
Definition: AffineTransform.h:109
void omni::geometry::AffineTransform::setTranslation ( QVector3D const &  _translation)

Set new translation vector.

72  {
73  translation_ = _translation;
74  }
QVector3D translation_
Definition: AffineTransform.h:115
void omni::geometry::AffineTransform::setTranslationEnabled ( bool  _enabled)

Enable or disable translation.

130  {
131  translationEnabled_ = _enabled;
132  }
bool translationEnabled_
Definition: AffineTransform.h:114
void omni::geometry::AffineTransform::setUniformScaleEnabled ( bool  _enabled)

Set whether scaling is uniform.

Enable or disable scale.

110  {
111  uniformScaleEnabled_ = _enabled;
112  }
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
void omni::geometry::AffineTransform::toStream ( QDataStream &  _os) const

Write transformation to stream.

135  {
136  PropertyMap _map;
137  _map("rotationEnabled",rotationEnabled_)
138  ("rotation",rotation_)
139  ("scaleEnabled",scaleEnabled_)
140  ("scale",scale_)
141  ("uniformScale",uniformScale_)
142  ("uniformScaleEnabled",uniformScaleEnabled_)
143  ("translationEnabled",translationEnabled_)
144  ("translation",translation_);
145  _os << _map;
146  }
bool rotationEnabled_
Definition: AffineTransform.h:106
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
float uniformScale_
Definition: AffineTransform.h:112
QVector3D translation_
Definition: AffineTransform.h:115
bool translationEnabled_
Definition: AffineTransform.h:114
bool scaleEnabled_
Definition: AffineTransform.h:109
QVector3D scale_
Definition: AffineTransform.h:111
EulerAngles rotation_
Definition: AffineTransform.h:107
QVector3D & omni::geometry::AffineTransform::translation ( )

Return reference to translation vector.

68  {
69  return translation_;
70  }
QVector3D translation_
Definition: AffineTransform.h:115
QVector3D const & omni::geometry::AffineTransform::translation ( ) const

Return reference to translation vector (const)

64  {
65  return translation_;
66  }
QVector3D translation_
Definition: AffineTransform.h:115
bool omni::geometry::AffineTransform::translationEnabled ( ) const

Return true if translation is enabled.

125  {
126  return translationEnabled_;
127  }
bool translationEnabled_
Definition: AffineTransform.h:114
float omni::geometry::AffineTransform::uniformScale ( ) const

Return scale factor.

49  {
50  return uniformScale_;
51  }
float uniformScale_
Definition: AffineTransform.h:112
bool omni::geometry::AffineTransform::uniformScaleEnabled ( ) const

Return true if scaling is uniform (means scaling is equal for xyz)

Return true if scaling is enabled.

105  {
106  return uniformScaleEnabled_;
107  }
bool uniformScaleEnabled_
Definition: AffineTransform.h:110

Friends And Related Function Documentation

bool operator== ( AffineTransform const &  _lhs,
AffineTransform const &  _rhs 
)
friend

Test for equality.

162  {
163  return
171  }
bool rotationEnabled_
Definition: AffineTransform.h:106
bool uniformScaleEnabled_
Definition: AffineTransform.h:110
QVector3D translation_
Definition: AffineTransform.h:115
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
bool translationEnabled_
Definition: AffineTransform.h:114
bool scaleEnabled_
Definition: AffineTransform.h:109
QVector3D scale_
Definition: AffineTransform.h:111
EulerAngles rotation_
Definition: AffineTransform.h:107

Field Documentation

EulerAngles omni::geometry::AffineTransform::rotation_
private
bool omni::geometry::AffineTransform::rotationEnabled_ = true
private
QVector3D omni::geometry::AffineTransform::scale_
private
bool omni::geometry::AffineTransform::scaleEnabled_ = true
private
QVector3D omni::geometry::AffineTransform::translation_
private
bool omni::geometry::AffineTransform::translationEnabled_ = true
private
float omni::geometry::AffineTransform::uniformScale_ = 1.0
private
bool omni::geometry::AffineTransform::uniformScaleEnabled_ = false
private

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