Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members

esve::engine::dim4::impl::Transform Class Reference

Implements engine::dim4::Transform. More...

#include <esve/engine/dim4/impl/Transform.hxx>

Inheritance diagram for esve::engine::dim4::impl::Transform:

esve::engine::dim4::Transform List of all members.

Public Member Functions

void left_act (const Transform &left)
 *this := left * (*this)

void right_act (const Transform &right)
 *this := (*this) * right

void act (const Transform &action, const Transform &basis)
 General differential action.

void identity ()
 *this := 1

void invert ()
 *this := (*this)^(-1)

void assign (const Transform &h)
 *this := t

void normalize ()
 Snap to upper-triangular with unitary diagonal elements.

bool operator== (const Transform &h) const
 Equal by value.

bool operator!= (const Transform &h) const
 Unequal by value.

 Transform ()
 Construct the identity.

 Transform (const types::quat &a, const types::quat &b, const types::quat &c, const types::quat &d)
 Construct with these matrix elements. See engine::dim4::Transform.

const types::quata () const
 Upper-left.

void a (const types::quat &a)
 Upper-left.

const types::quatb () const
 Upper-right.

void b (const types::quat &b)
 Upper-right.

const types::quatc () const
 Lower-left.

void c (const types::quat &c)
 Lower-left.

const types::quatd () const
 Lower-right.

void d (const types::quat &d)
 Lower-right.

Actions
Relative actions on the current state. The basis argument is similarity-conjugated:
            *this := basis*action*(basis)^(-1)*(*this)

basis == IDENTITY means left action.
basis == *this means right action.

virtual void rotate (types::real alpha, types::real beta, const types::quat &r, const types::quat &s, const Transform &basis=IDENTITY)=0
 Rotate by angle alpha in the (r, s) plane; rotate by angle beta in the (r, s)-complement plane.

virtual void rotate (types::real alpha, types::real beta, const types::pure &u, const Transform &basis=IDENTITY)=0
 Rotate by angle alpha in the (1, u) plane; rotate by angle beta in the (1, u)-complement plane.

virtual void translate (const types::quat &r, const Transform &basis=IDENTITY)=0
 Move the local origin from g to g' = g + r.

virtual void invertate (const types::quat &r, const Transform &basis=IDENTITY)=0
 Move the local infinity from h to h' per the relation (h')^(-1) = h^(-1) + r.

virtual void scalate (types::real gamma, const Transform &basis=IDENTITY)=0
 Scale from the current state by a factor of gamma.


Static Public Attributes

const TransformIDENTITY
 The group identity element.


Detailed Description

Implements engine::dim4::Transform.


Member Function Documentation

void esve::engine::dim4::impl::Transform::normalize  )  [virtual]
 

Snap to upper-triangular with unitary diagonal elements.

In other words, remove inversion and scaling, leaving only the rotation group with translations.

After normalize(), the transformation will be of the form

 f(z) = a*z*conj(d) + b*conj(d)
where a and d are unitary.

Implements esve::engine::dim4::Transform.

virtual void esve::engine::dim4::Transform::rotate types::real  alpha,
types::real  beta,
const types::quat r,
const types::quat s,
const Transform basis = IDENTITY
[pure virtual, inherited]
 

Rotate by angle alpha in the (r, s) plane; rotate by angle beta in the (r, s)-complement plane.

Orientation is positive with r rotating toward s.

Precondition:
r, s must be orthonormal.

virtual void esve::engine::dim4::Transform::rotate types::real  alpha,
types::real  beta,
const types::pure u,
const Transform basis = IDENTITY
[pure virtual, inherited]
 

Rotate by angle alpha in the (1, u) plane; rotate by angle beta in the (1, u)-complement plane.

Orientation is positive with 1 rotating toward u.

Precondition:
u is unit length.


Generated on Tue May 30 11:40:56 2006 for esve by doxygen 1.3.4