Main Page   Class Hierarchy   Compound List   File List   Compound Members  

csTransform Class Reference

A class which defines a transformation from one coordinate system to another. More...

#include <transfrm.h>

Inheritance diagram for csTransform:

csReversibleTransform csOrthoTransform csCamera List of all members.

Public Methods

 csTransform ()
 Initialize with the identity transformation.

 csTransform (const csMatrix3 &other2this, const csVector3 &origin_pos)
 Initialize with the given transformation. More...

const csMatrix3& GetO2T () const
 Get 'other' to 'this' transformation matrix. More...

const csVector3& GetO2TTranslation () const
 Get 'world' to 'this' translation. More...

const csVector3& GetOrigin () const
 Get origin of transformed coordinate system. More...

virtual void SetO2T (const csMatrix3 &m)
 Set 'other' to 'this' transformation matrix. More...

virtual void SetO2TTranslation (const csVector3 &v)
 Set 'world' to 'this' translation. More...

void SetOrigin (const csVector3 &v)
 Set origin of transformed coordinate system. More...

void Translate (const csVector3 &v)
 Move the 'other' to 'this' translation by a specified amount. More...

csVector3 Other2This (const csVector3 &v) const
 Transform vector in 'other' space v to a vector in 'this' space. More...

csVector3 Other2ThisRelative (const csVector3 &v) const
 Convert vector v in 'other' space to a vector in 'this' space. More...

csPlane3 Other2This (const csPlane3 &p) const
 Convert a plane in 'other' space to 'this' space. More...

csPlane3 Other2ThisRelative (const csPlane3 &p) const
 Convert a plane in 'other' space to 'this' space. More...

void Other2This (const csPlane3 &p, const csVector3 &point, csPlane3 &result) const
 Convert a plane in 'other' space to 'this' space. More...

csSphere Other2This (const csSphere &s) const
 Convert a sphere in 'other' space to 'this' space.


Static Public Methods

csTransform GetReflect (const csPlane3 &pl)
 Return a transform that represents a mirroring across a plane. More...


Protected Attributes

csMatrix3 m_o2t
 Transformation matrix from 'other' space to 'this' space.

csVector3 v_o2t
 Location of the origin for 'this' space.


Friends

csVector3 operator * (const csVector3 &v, const csTransform &t)
 Apply a transformation to a 3D vector. More...

csVector3 operator * (const csTransform &t, const csVector3 &v)
 Apply a transformation to a 3D vector. More...

csVector3& operator *= (csVector3 &v, const csTransform &t)
 Apply a transformation to a 3D vector. More...

csPlane3 operator * (const csPlane3 &p, const csTransform &t)
 Apply a transformation to a Plane. More...

csPlane3 operator * (const csTransform &t, const csPlane3 &p)
 Apply a transformation to a Plane. More...

csPlane3& operator *= (csPlane3 &p, const csTransform &t)
 Apply a transformation to a Plane. More...

csSphere operator * (const csSphere &p, const csTransform &t)
 Apply a transformation to a sphere. More...

csSphere operator * (const csTransform &t, const csSphere &p)
 Apply a transformation to a sphere. More...

csSphere& operator *= (csSphere &p, const csTransform &t)
 Apply a transformation to a sphere. More...

csMatrix3 operator * (const csMatrix3 &m, const csTransform &t)
 Multiply a matrix with the transformation matrix. More...

csMatrix3 operator * (const csTransform &t, const csMatrix3 &m)
 Multiply a matrix with the transformation matrix. More...

csMatrix3& operator *= (csMatrix3 &m, const csTransform &t)
 Multiply a matrix with the transformation matrix. More...

csTransform operator * (const csTransform &t1, const csReversibleTransform &t2)
 Combine two transforms, rightmost first. More...


Detailed Description

A class which defines a transformation from one coordinate system to another.

The two coordinate systems are refered to as 'other' and 'this'. The transform defines a transformation from 'other' to 'this'.


Constructor & Destructor Documentation

csTransform::csTransform ( const csMatrix3 & other2this,
const csVector3 & origin_pos ) [inline]
 

Initialize with the given transformation.

The transformation is given as a 3x3 matrix and a vector. The transformation is defined to mean T=M*(O-V) with T the vector in 'this' space, O the vector in 'other' space, M the transformation matrix and V the transformation vector.


Member Function Documentation

const csMatrix3 & csTransform::GetO2T ( ) const [inline]
 

Get 'other' to 'this' transformation matrix.

This is the 3x3 matrix M from the transform equation T=M*(O-V).

const csVector3 & csTransform::GetO2TTranslation ( ) const [inline]
 

Get 'world' to 'this' translation.

This is the vector V from the transform equation T=M*(O-V). This is equivalent to calling GetOrigin().

const csVector3 & csTransform::GetOrigin ( ) const [inline]
 

Get origin of transformed coordinate system.

This is equivalent to calling GetO2TTranslation().

csTransform csTransform::GetReflect ( const csPlane3 & pl ) [static]
 

Return a transform that represents a mirroring across a plane.

This function will return a csTransform which represents a reflection across the plane pl.

void csTransform::Other2This ( const csPlane3 & p,
const csVector3 & point,
csPlane3 & result ) const
 

Convert a plane in 'other' space to 'this' space.

This is an optimized version for which a point on the new plane is known (point). The result is stored in 'result'. If 'p' is expressed as (N,D) (with N a vector for the A,B,C components of 'p') then this will return a new plane in 'result' which looks like (M*N,-(M*N)*point).

csPlane3 csTransform::Other2This ( const csPlane3 & p ) const
 

Convert a plane in 'other' space to 'this' space.

If 'p' is expressed as (N,D) (with N a vector for the A,B,C components of 'p') then this will return a new plane which looks like (M*N,D+(M*N)*(M*V)).

csVector3 csTransform::Other2This ( const csVector3 & v ) const [inline]
 

Transform vector in 'other' space v to a vector in 'this' space.

This is the basic transform function. This will calculate and return M*(v-V).

csPlane3 csTransform::Other2ThisRelative ( const csPlane3 & p ) const
 

Convert a plane in 'other' space to 'this' space.

This version ignores translation. If 'p' is expressed as (N,D) (with N a vector for the A,B,C components of 'p') then this will return a new plane which looks like (M*N,D).

csVector3 csTransform::Other2ThisRelative ( const csVector3 & v ) const [inline]
 

Convert vector v in 'other' space to a vector in 'this' space.

Use the origin of 'other' space. This will calculate and return M*v (so the translation or V of this transform is ignored).

void csTransform::SetO2T ( const csMatrix3 & m ) [inline, virtual]
 

Set 'other' to 'this' transformation matrix.

This is the 3x3 matrix M from the transform equation T=M*(O-V).

Reimplemented in csCamera, csReversibleTransform, and csOrthoTransform.

void csTransform::SetO2TTranslation ( const csVector3 & v ) [inline, virtual]
 

Set 'world' to 'this' translation.

This is the vector V from the transform equation T=M*(O-V). This is equivalent to calling SetOrigin().

Reimplemented in csCamera.

void csTransform::SetOrigin ( const csVector3 & v ) [inline]
 

Set origin of transformed coordinate system.

This is equivalent to calling SetO2TTranslation().

void csTransform::Translate ( const csVector3 & v ) [inline]
 

Move the 'other' to 'this' translation by a specified amount.

Basically this will add 'v' to the origin or translation of this transform so that the new transform looks like T=M*(O-(V+v)).


Friends And Related Function Documentation

csTransform operator * ( const csTransform & t1,
const csReversibleTransform & t2 ) [friend]
 

Combine two transforms, rightmost first.

Given the following definitions:

  • 't1' expressed as T=t1.M*(O-t1.V)
  • 't2' expressed as T=t2.M*(O-t2.V)
  • t2.Minv is the inverse of t2.M
Then this will return a new transform T=(t1.M*t2.M)*(O-(t2.V+t2.Minv*t1.V)).

Reimplemented in csReversibleTransform.

csMatrix3 operator * ( const csTransform & t,
const csMatrix3 & m ) [friend]
 

Multiply a matrix with the transformation matrix.

This will calculate and return M*m.

csMatrix3 operator * ( const csMatrix3 & m,
const csTransform & t ) [friend]
 

Multiply a matrix with the transformation matrix.

This will calculate and return m*M.

csSphere operator * ( const csTransform & t,
const csSphere & p ) [friend]
 

Apply a transformation to a sphere.

This corresponds exactly to calling t.Other2This(p).

csSphere operator * ( const csSphere & p,
const csTransform & t ) [friend]
 

Apply a transformation to a sphere.

This corresponds exactly to calling t.Other2This(p).

csPlane3 operator * ( const csTransform & t,
const csPlane3 & p ) [friend]
 

Apply a transformation to a Plane.

This corresponds exactly to calling t.Other2This(p).

csPlane3 operator * ( const csPlane3 & p,
const csTransform & t ) [friend]
 

Apply a transformation to a Plane.

This corresponds exactly to calling t.Other2This(p).

csVector3 operator * ( const csTransform & t,
const csVector3 & v ) [friend]
 

Apply a transformation to a 3D vector.

This corresponds exactly to calling t.Other2This (v).

csVector3 operator * ( const csVector3 & v,
const csTransform & t ) [friend]
 

Apply a transformation to a 3D vector.

This corresponds exactly to calling t.Other2This (v).

csMatrix3 & operator *= ( csMatrix3 & m,
const csTransform & t ) [friend]
 

Multiply a matrix with the transformation matrix.

This corresponds exactly to m*=M.

csSphere & operator *= ( csSphere & p,
const csTransform & t ) [friend]
 

Apply a transformation to a sphere.

This corresponds exactly to calling p = t.Other2This(p).

csPlane3 & operator *= ( csPlane3 & p,
const csTransform & t ) [friend]
 

Apply a transformation to a Plane.

This corresponds exactly to calling p = t.Other2This(p).

csVector3 & operator *= ( csVector3 & v,
const csTransform & t ) [friend]
 

Apply a transformation to a 3D vector.

This corresponds exactly to calling v = t.Other2This(v).


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000