CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

csTransform Class Reference
[Geometry utilities]

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. More...

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

void Identity ()
 Reset this transform to the identity transform. More...

bool IsIdentity () const
 Returns true if this transform is an identity transform. More...

const csMatrix3GetO2T () const
 Get 'other' to 'this' transformation matrix. More...

const csVector3GetO2TTranslation () const
 Get 'world' to 'this' translation. More...

const csVector3GetOrigin () 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. More...


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. More...

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


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...

csVector3operator *= (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...

csPlane3operator *= (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...

csSphereoperator *= (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...

csMatrix3operator *= (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'.

Definition at line 41 of file transfrm.h.


Constructor & Destructor Documentation

csTransform::csTransform   [inline]
 

Initialize with the identity transformation.

Definition at line 53 of file transfrm.h.

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.

Definition at line 62 of file transfrm.h.


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).

Definition at line 99 of file transfrm.h.

Referenced by csOrthoTransform::csOrthoTransform, and csCamera::GetW2C.

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().

Definition at line 106 of file transfrm.h.

Referenced by csOrthoTransform::csOrthoTransform, and csCamera::GetW2CTranslation.

const csVector3& csTransform::GetOrigin   const [inline]
 

Get origin of transformed coordinate system.

This is equivalent to calling GetO2TTranslation().

Definition at line 112 of file transfrm.h.

Referenced by csMovable::GetFullPosition, and csMovable::GetPosition.

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::Identity   [inline]
 

Reset this transform to the identity transform.

Definition at line 68 of file transfrm.h.

References SetO2T, and SetO2TTranslation.

bool csTransform::IsIdentity   const [inline]
 

Returns true if this transform is an identity transform.

This tests all fields so don't call this before every operation.

Definition at line 78 of file transfrm.h.

References csMatrix3::m11, csMatrix3::m12, csMatrix3::m13, csMatrix3::m21, csMatrix3::m22, csMatrix3::m23, csMatrix3::m31, csMatrix3::m32, csMatrix3::m33, csVector3::x, csVector3::y, and csVector3::z.

csSphere csTransform::Other2This const csSphere   s const
 

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

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).

Definition at line 145 of file transfrm.h.

Referenced by csCamera::World2Camera.

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).

Definition at line 155 of file transfrm.h.

virtual 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.

Definition at line 118 of file transfrm.h.

Referenced by Identity.

virtual 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.

Definition at line 125 of file transfrm.h.

Referenced by Identity, csCamera::SetO2TTranslation, SetOrigin, and Translate.

void csTransform::SetOrigin const csVector3   v [inline]
 

Set origin of transformed coordinate system.

This is equivalent to calling SetO2TTranslation().

Definition at line 131 of file transfrm.h.

References SetO2TTranslation.

Referenced by csMovable::SetPosition, and csCamera::SetPosition.

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)).

Definition at line 138 of file transfrm.h.

References SetO2TTranslation.

Referenced by csCamera::MoveUnrestricted, and csCamera::MoveWorldUnrestricted.


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).


Member Data Documentation

csMatrix3 csTransform::m_o2t [protected]
 

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

Definition at line 45 of file transfrm.h.

Referenced by csReversibleTransform::csReversibleTransform, csReversibleTransform::GetInverse, csReversibleTransform::GetT2OTranslation, csOrthoTransform::SetO2T, csReversibleTransform::SetO2T, csOrthoTransform::SetT2O, and csReversibleTransform::SetT2O.

csVector3 csTransform::v_o2t [protected]
 

Location of the origin for 'this' space.

Definition at line 47 of file transfrm.h.

Referenced by csReversibleTransform::GetInverse, csReversibleTransform::GetT2OTranslation, and csReversibleTransform::This2Other.


The documentation for this class was generated from the following file:
Generated for Crystal Space by doxygen 1.2.14