Core 1.0
|
Solid transformations. More...
#include <frame.h>
Public Member Functions | |
Frame (const Matrix &=Matrix::Identity, const Vector &=Vector::Null) | |
Creates a frame given a rotation matrix and a translation vector. More... | |
Frame (const Vector &, const Vector &, const Vector &, const Vector &) | |
Creates a frame given the origin and its orthogonal unit vectors. More... | |
~Frame () | |
Empty. | |
Matrix | R () const |
Returns the rotation matrix of the frame. | |
Vector | T () const |
Returns the translation vector of the frame. | |
Vector | GetVector (int) const |
Returns the i-th basis vector of the frame. More... | |
void | Compose (const Frame &) |
Compose the frame with another one. More... | |
Frame | Composed (const Frame &) const |
Compose the frame with another one. More... | |
Frame | Inverse () const |
Compute the inverse transformation. | |
Vector | Transform (const Vector &) const |
Transform a point out of the frame coordinate system. More... | |
Vector | InverseTransform (const Vector &) const |
Transform a point into the frame coordinate system. More... | |
Vector | TransformDirection (const Vector &) const |
Transform a direction vector out of the frame coordinate system. More... | |
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. More... | |
Ray | InverseTransform (const Ray &) const |
Transform a ray into the frame coordinate system. More... | |
Vector | CircleVertex (const double &, int=1, int=2) const |
Compute the coordinates of a point on a circle inside the frame;. More... | |
Vector | CircleNormal (const double &, int=1, int=2) const |
Compute the coordinates of the normal a point on a circle inside the frame;. More... | |
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. More... | |
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. More... | |
Static Public Member Functions | |
static Frame | Translation (const Vector &) |
Creates a translation transformation. More... | |
static Frame | Rotation (const Vector &) |
Creates a rotation frame. More... | |
static Frame | Rotation (const Vector &, const double &) |
Create a rotation frame about an arbitrary axis. More... | |
static Frame | Rotation (const Vector &, const Vector &) |
Create a frame that rotates a normalized vector into another one. More... | |
static Frame | Canonical (const Vector &, const Vector &) |
Given a point and a direction, compute the frame that brings these into a canonical coordinate system. More... | |
static Frame | Orthonormal (const Vector &, const Vector &) |
Compute a frame given an origin and direction vector. More... | |
Static Public Attributes | |
static const Frame | Id |
Identity. | |
Protected Attributes | |
Matrix | r |
Rotation matrix. | |
Vector | t |
Translation vector. | |
Friends | |
std::ostream & | operator<< (std::ostream &, const Frame &) |
Overloaded. More... | |
Solid transformations.
The class groups the rotation matrix and the translation vector.
The orientation of the frame should be defined by the appropriate rotation matrix.
The inverse transformation is implicitly characterized as the transposed matrix and the opposite translation vector.
|
explicit |
Creates a frame given a rotation matrix and a translation vector.
r | Frame matrix. |
t | Translation vector. |
Creates a frame given the origin and its orthogonal unit vectors.
c | Origin. |
x,y,z | Orthonormal vectors. |
Given a point and a direction, compute the frame that brings these into a canonical coordinate system.
This is useful for computing the canonical coordinate system of revolution objects such as cylinders or cones.
p | Origin of the frame. |
axis | Vertical z-axis of the frame. |
Vector Frame::CircleNormal | ( | const double & | theta, |
int | i = 1 , |
||
int | j = 2 |
||
) | const |
Compute the coordinates of the normal a point on a circle inside the frame;.
theta | Euler angle. |
i,j | Integers representing which column vector of the matrix will be used as basis. |
Vector Frame::CircleVertex | ( | const double & | theta, |
int | i = 1 , |
||
int | j = 2 |
||
) | const |
Compute the coordinates of a point on a circle inside the frame;.
theta | Euler angle. |
i,j | Integers representing which column vector of the matrix will be used as basis. |
void Frame::Compose | ( | const Frame & | frame | ) |
Compose the frame with another one.
frame | The frame. |
Compose the frame with another one.
frame | The frame. |
|
inline |
Returns the i-th basis vector of the frame.
This is a convenience function, which is the same as:
i | Column index. |
Transform a ray into the frame coordinate system.
ray | The ray. |
Transform a point into the frame coordinate system.
p | Point. |
Compute a frame given an origin and direction vector.
c | Origin. |
n | Direction. |
Creates a rotation frame.
a | A vector of angles (should be in radians) that defines the rotation x-y-z axes. |
Create a rotation frame about an arbitrary axis.
axis | Axis. |
angle | Angle (should be in radian). |
Create a frame that rotates a normalized vector into another one.
a,b | Initial and final vectors (which should be normalized). |
Vector Frame::SphereNormal | ( | const double & | theta, |
const double & | phi, | ||
int | i = 1 , |
||
int | j = 2 , |
||
int | k = 0 |
||
) | const |
Compute the coordinates of the normal of a point on a sphere inside the frame.
theta,phi | Polar coordinates. |
i,j,k | Integers representing which column vector of the matrix will be used as basis. |
Vector Frame::SphereVertex | ( | const double & | r, |
const double & | theta, | ||
const double & | phi, | ||
int | i = 1 , |
||
int | j = 2 , |
||
int | k = 0 |
||
) | const |
Compute the coordinates of a point on a sphere inside the frame.
r | Radius. |
theta,phi | Polar coordinates. |
i,j,k | Integers representing which column vector of the matrix will be used as basis. |
Transform a ray out of the frame coordinate system.
ray | The ray. |
Transform a point out of the frame coordinate system.
p | Point. |
Transform a direction vector out of the frame coordinate system.
n | Vector. |
Creates a translation transformation.
Matrix is identity whereas the translation vector is computed from the argument vector.
t | Translation vector. |
|
friend |
Overloaded.
s | Stream. |
frame | The frame. |