Core 1.0
FrameScaled Class Reference

A transformation defined as the composition of a rotation, a translation and a scale. More...

#include <frame.h>

Inheritance diagram for FrameScaled:
Frame

Public Member Functions

 FrameScaled (const Matrix &=Matrix::Identity, const Vector &=Vector::Null, const Vector &=Vector(1.0))
 Creates a frame.
 
 FrameScaled (const Vector &)
 Creates a translation frame.
 
 FrameScaled (const Vector &, const Vector &)
 Creates a frame given the translation and scaling vectors.
 
 FrameScaled (const Vector &, const double &)
 Creates a frame given the translation and scale.
 
 FrameScaled (const Vector &, const Vector &, const Vector &, const Vector &)
 Creates a frame given the origin of the frame and orthogonal unit vectors.
 
 FrameScaled (const Frame &, const Vector &=Vector(1.0))
 Creates a frame.
 
 FrameScaled (const Frame2 &, const Vector &=Vector(1.0))
 Creates a frame.
 
 ~FrameScaled ()
 Empty.
 
Matrix R () const
 Returns the rotation matrix of the frame.
 
Vector T () const
 Returns the translation vector of the frame.
 
Vector S () const
 Get scaling vector from transformation.
 
void Rotate (const Vector &)
 Rotate the shape.
 
void ObjectRotate (const Vector &)
 Rotate the shape in object coordinates (does not modify the translation vector).
 
void Scale (const Vector &)
 Scale the shape.
 
void Scale (const double &)
 Scale the shape.
 
void Translate (const Vector &)
 Translate the shape.
 
FrameScaled Inverse () const
 Compute and return the inverse transformation.
 
Matrix4 GetMatrix4 () const
 Get the homogeneous matrix out of the frame.
 
Vector Transform (const Vector &) const
 Transforms a given input point.
 
Vector InverseTransform (const Vector &) const
 Inverse transformation of a given input point.
 
Vector TransformDirection (const Vector &) const
 Transforms a given input normal.
 
Vector InverseTransformDirection (const Vector &) const
 Transforms a given input normal.
 
void Compose (const FrameScaled &)
 Compose two frames.
 
FrameScaled Composed (const FrameScaled &) const
 Compose two frames.
 
void Lerp (const FrameScaled &, const FrameScaled &, const double &)
 Linear interpolation of two frames.
 

Static Public Member Functions

static FrameScaled Translation (const Vector &)
 Creates a translation transformation.
 
static FrameScaled Rotation (const Vector &)
 Creates a rotation frame.
 
static FrameScaled Rotation (const Vector &, const double &)
 Create a rotation frame about an arbitrary axis.
 
static FrameScaled Rotation (const Vector &, const Vector &)
 Create a frame that rotates a normalized vector into another one.
 
static FrameScaled Scaling (const Vector &)
 Create a scaling frame.
 
static FrameScaled Scaling (const double &)
 Create a uniform scaling frame.
 

Static Public Attributes

static const FrameScaled Id
 Identity.
 

Protected Attributes

Vector s
 Scaling vector.
 
- Protected Attributes inherited from Frame
Matrix r
 Rotation matrix.
 
Vector t
 Translation vector.
 

Friends

std::ostream & operator<< (std::ostream &s, const FrameScaled &frame)
 Overloaded.
 

Additional Inherited Members

- Protected Member Functions inherited from Frame
 Frame (const Matrix &=Matrix::Identity, const Vector &=Vector::Null)
 Creates a frame given a rotation matrix and a translation vector.
 
 Frame (const Vector &, const Vector &, const Vector &, const Vector &)
 Creates a frame given the origin and its orthogonal unit vectors.
 
 Frame (const Frame2 &)
 Creates a frame from another planar frame.
 
 ~Frame ()
 Empty.
 
Matrix R () const
 Returns the rotation matrix of the frame.
 
Vector T () const
 Returns the translation vector of the frame.
 
void Compose (const Frame &)
 Compose the frame with another one.
 
Frame Composed (const Frame &) const
 Compose the frame with another one.
 
Frame Inverse () const
 Compute the inverse transformation.
 
Vector Transform (const Vector &) const
 Transform a point out of the frame coordinate system.
 
Vector InverseTransform (const Vector &) const
 Transform a point into the frame coordinate system.
 
Vector TransformDirection (const Vector &) const
 Transform a direction vector out of the frame coordinate system.
 
Vector InverseTransformDirection (const Vector &) const
 Transform a direction vector into the frame coordinate system.
 
Ray Transform (const Ray &) const
 Transform a ray out of the frame coordinate system.
 
Ray InverseTransform (const Ray &) const
 Transform a ray into the frame coordinate system.
 
Vector CircleVertex (const double &, int=1, int=2) const
 Compute the coordinates of a point on a circle inside the frame;.
 
Vector CircleNormal (const double &, int=1, int=2) const
 Compute the coordinates of the normal a point on a circle inside the frame;.
 
Vector SphereVertex (const double &, const double &, const double &, int=1, int=2, int=0) const
 Compute the coordinates of a point on a sphere inside the frame.
 
Vector SphereNormal (const double &, const double &, int=1, int=2, int=0) const
 Compute the coordinates of the normal of a point on a sphere inside the frame.
 
- Static Protected Member Functions inherited from Frame
static Frame Translation (const Vector &)
 Creates a translation transformation.
 
static Frame Rotation (const Vector &)
 Creates a rotation frame.
 
static Frame Rotation (const Vector &, const double &)
 Create a rotation frame about an arbitrary axis.
 
static Frame Rotation (const Vector &, const Vector &)
 Create a frame that rotates a normalized vector into another one.
 
static Frame Canonical (const Vector &, const Vector &)
 Given a point and a direction, compute the frame that brings these into a canonical coordinate system.
 
static Frame Orthonormal (const Vector &, const Vector &)
 Compute a frame given an origin and direction vector.
 
- Static Protected Attributes inherited from Frame
static const Frame Id
 Identity.
 

Detailed Description

A transformation defined as the composition of a rotation, a translation and a scale.

The data-structure groups the rotation matrix, the translation and scaling vectors.

The orientation of the frame should be defined by the appropriate rotation matrix.

In general, a FrameScaled is defined by its rotation matrix, and a translation and scaling vector:

FrameScaled frame(Matrix::Rotation(Vector( Math::Pi/4.0,0.0, 0.0)),Vector(0.0),Vector(1.0,1.0,2.0));
FrameScaled(const Matrix &=Matrix::Identity, const Vector &=Vector::Null, const Vector &=Vector(1.0))
Creates a frame.
Definition framescaled.cpp:38
static constexpr double Pi
π.
Definition mathematics.h:178
static Matrix Rotation(const Vector &)
Create a rotation matrix given a vector of angles that specifies the rotation around each world coord...
Definition matrix.cpp:117
Vectors in three dimensions.
Definition evector.h:20

When there is no rotation, the rotation matrix can be defined using the identity matrix:

FrameScaled frame(Matrix::Identity,Vector(-2.0,4.0,0.0),Vector(2.0,1.0,1.0));
static const Matrix Identity
Identity matrix.
Definition matrix.h:279

It is also possible and simpler to use:

FrameScaled frame(Vector(-2.0,4.0,0.0),Vector(2.0,1.0,1.0));

Constructor & Destructor Documentation

◆ FrameScaled() [1/7]

FrameScaled::FrameScaled ( const Matrix & r = Matrix::Identity,
const Vector & t = Vector::Null,
const Vector & s = Vector(1.0) )
explicit

Creates a frame.

Parameters
rRotation matrix.
tTranslation vector.
sScaling vector.

◆ FrameScaled() [2/7]

FrameScaled::FrameScaled ( const Vector & t)
explicit

Creates a translation frame.

Parameters
tTranslation.

◆ FrameScaled() [3/7]

FrameScaled::FrameScaled ( const Vector & t,
const Vector & s )
explicit

Creates a frame given the translation and scaling vectors.

Parameters
tTranslation.
sScaling vector.

◆ FrameScaled() [4/7]

FrameScaled::FrameScaled ( const Vector & t,
const double & s )
explicit

Creates a frame given the translation and scale.

Parameters
tTranslation.
sUniform scaling factor.

◆ FrameScaled() [5/7]

FrameScaled::FrameScaled ( const Vector & c,
const Vector & x,
const Vector & y,
const Vector & z )
explicit

Creates a frame given the origin of the frame and orthogonal unit vectors.

Parameters
cOrigin.
x,y,zOrthogonal unit vectors.

◆ FrameScaled() [6/7]

FrameScaled::FrameScaled ( const Frame & frame,
const Vector & s = Vector(1.0) )

Creates a frame.

Parameters
frameThe frame.
sScaling.

◆ FrameScaled() [7/7]

FrameScaled::FrameScaled ( const Frame2 & frame,
const Vector & s = Vector(1.0) )

Creates a frame.

Parameters
frameThe frame.
sScaling.

Member Function Documentation

◆ Compose()

void FrameScaled::Compose ( const FrameScaled & frame)

Compose two frames.

Parameters
frameThe frame.

◆ Composed()

FrameScaled FrameScaled::Composed ( const FrameScaled & frame) const

Compose two frames.

Parameters
frameThe frame.

◆ InverseTransform()

Vector FrameScaled::InverseTransform ( const Vector & p) const

Inverse transformation of a given input point.

Parameters
pPoint.

◆ InverseTransformDirection()

Vector FrameScaled::InverseTransformDirection ( const Vector & n) const

Transforms a given input normal.

Parameters
nNormal vector.

◆ Lerp()

void FrameScaled::Lerp ( const FrameScaled & a,
const FrameScaled & b,
const double & alpha )

Linear interpolation of two frames.

Parameters
a,bThe two frames.
alphaInterpolation parameter.

◆ ObjectRotate()

void FrameScaled::ObjectRotate ( const Vector & r)

Rotate the shape in object coordinates (does not modify the translation vector).

Parameters
rRotation vector representing the rotation angles around x, y and z axes.

◆ Rotate()

void FrameScaled::Rotate ( const Vector & r)

Rotate the shape.

Parameters
rRotation vector representing the rotation angles around x, y and z axes.

◆ Rotation() [1/3]

FrameScaled FrameScaled::Rotation ( const Vector & a)
static

Creates a rotation frame.

Parameters
aA vector of angles (expressed in radians) that defines the rotation around x-y-z axes.

◆ Rotation() [2/3]

FrameScaled FrameScaled::Rotation ( const Vector & axis,
const double & angle )
static

Create a rotation frame about an arbitrary axis.

Parameters
axisAxis.
angleAngle (should be in radian).

◆ Rotation() [3/3]

FrameScaled FrameScaled::Rotation ( const Vector & a,
const Vector & b )
static

Create a frame that rotates a normalized vector into another one.

Parameters
a,bInitial and final vectors (should be normalized).

◆ Scale() [1/2]

void FrameScaled::Scale ( const double & u)

Scale the shape.

Parameters
uScaling factor.

◆ Scale() [2/2]

void FrameScaled::Scale ( const Vector & u)

Scale the shape.

Parameters
uScaling vector.

◆ Scaling() [1/2]

FrameScaled FrameScaled::Scaling ( const double & s)
static

Create a uniform scaling frame.

Parameters
sScaling.

◆ Scaling() [2/2]

FrameScaled FrameScaled::Scaling ( const Vector & s)
static

Create a scaling frame.

Parameters
sScaling vector.

◆ Transform()

Vector FrameScaled::Transform ( const Vector & p) const

Transforms a given input point.

Parameters
pPoint.

◆ TransformDirection()

Vector FrameScaled::TransformDirection ( const Vector & n) const

Transforms a given input normal.

Parameters
nNormal vector.

◆ Translate()

void FrameScaled::Translate ( const Vector & t)

Translate the shape.

Parameters
tTranslation vector.

◆ Translation()

FrameScaled FrameScaled::Translation ( const Vector & t)
static

Creates a translation transformation.

Parameters
tTranslation vector.

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & s,
const FrameScaled & frame )
friend

Overloaded.

Parameters
sStream.
frameThe frame.