Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 981

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: csReversibleTransform Class Reference (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li class="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<h1>csReversibleTransform Class Reference<br>
<small>
[<a class="el" href="group__geom__utils.html">Geometry utilities</a>]</small>
</h1><!-- doxytag: class="csReversibleTransform" --><!-- doxytag: inherits="csTransform" -->A class which defines a reversible transformation from one coordinate system to another by maintaining an inverse transformation matrix.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="transfrm_8h-source.html">csgeom/transfrm.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for csReversibleTransform:</div>
<div class="dynsection">
<p><center><img src="classcsReversibleTransform__inherit__graph.png" border="0" usemap="#csReversibleTransform__inherit__map" alt="Inheritance graph"></center>
<map name="csReversibleTransform__inherit__map">
<area shape="rect" href="classcsOrthoTransform.html" title="A class which defines a reversible transformation from one coordinate system to another..." alt="" coords="20,161,156,188"><area shape="rect" href="classcsTransform.html" title="A class which defines a transformation from one coordinate system to another." alt="" coords="39,7,137,33"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="classcsReversibleTransform-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#262626bbd8bc304f09ab008e67ff7e54">csReversibleTransform</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize with the given transformation.  <a href="#262626bbd8bc304f09ab008e67ff7e54"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#2430185a991ce4493378b2e657828499">csReversibleTransform</a> (const <a class="el" href="classcsTransform.html">csTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize with the given transformation.  <a href="#2430185a991ce4493378b2e657828499"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f0d26f0b33e7692b5fc018b1e9a7f8c1">csReversibleTransform</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;o2t, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;pos)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize with the given transformation.  <a href="#f0d26f0b33e7692b5fc018b1e9a7f8c1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#141d3b365df0f36b1fb1b704d2e8dc91">csReversibleTransform</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize with the identity transformation.  <a href="#141d3b365df0f36b1fb1b704d2e8dc91"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#4da7113ed78952f3c0fbec4534595492">GetInverse</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the inverse of this transform.  <a href="#4da7113ed78952f3c0fbec4534595492"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#9b24e3ccd1874dd74ed48c8ef504db36">GetT2O</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get 'this' to 'other' transformation matrix.  <a href="#9b24e3ccd1874dd74ed48c8ef504db36"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsVector3.html">csVector3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#7d76fc227ef7e67297899060f70c3273">GetT2OTranslation</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get 'this' to 'other' translation.  <a href="#7d76fc227ef7e67297899060f70c3273"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#10ce5361544cb5cb59f259f677879769">LookAt</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;up)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Let this transform look at the given (x,y,z) point, using up as the up-vector.  <a href="#10ce5361544cb5cb59f259f677879769"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#cc4167fabbf3b9195f9f24d6312e4bf5">RotateOther</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the given transformation matrix, in other space, to reorient the transformation.  <a href="#cc4167fabbf3b9195f9f24d6312e4bf5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#36f17397f444e8a98b2b4d086c215df8">RotateOther</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v, float angle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the transform by the angle (radians) around the given vector, in other coordinates.  <a href="#36f17397f444e8a98b2b4d086c215df8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#b9dc14db5f80245d9ce2025df8e3c470">RotateThis</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the given transformation matrix, in this space, to reorient the transformation.  <a href="#b9dc14db5f80245d9ce2025df8e3c470"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#d774bc775536dd10c2490752e1ebbef5">RotateThis</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v, float angle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rotate the transform by the angle (radians) around the given vector, in these coordinates.  <a href="#d774bc775536dd10c2490752e1ebbef5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#7adc3d305ab65cd54d4360d5fcf8c0f1">SetO2T</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set 'other' to 'this' transformation matrix.  <a href="#7adc3d305ab65cd54d4360d5fcf8c0f1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#a0ae7c7834a8104fa463f9501734337c">SetT2O</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set 'this' to 'other' transformation matrix.  <a href="#a0ae7c7834a8104fa463f9501734337c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsSphere.html">csSphere</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#75a59077b8836a91d9212de002c8fa5c">This2Other</a> (const <a class="el" href="classcsSphere.html">csSphere</a> &amp;s) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a sphere in 'this' space to 'other' space.  <a href="#75a59077b8836a91d9212de002c8fa5c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#22ef53ece215cc70c6fa587544488a4b">This2Other</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;p, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;point, <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;result) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a plane in 'this' space to 'other' space.  <a href="#22ef53ece215cc70c6fa587544488a4b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsPlane3.html">csPlane3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#1e70de98403cd70b2e6365a70a9ccee9">This2Other</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;p) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a plane in 'this' space to 'other' space.  <a href="#1e70de98403cd70b2e6365a70a9ccee9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsVector3.html">csVector3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#0583af0d751ee86b38a29ff5f260facd">This2Other</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert vector v in 'this' space to 'other' space.  <a href="#0583af0d751ee86b38a29ff5f260facd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsPlane3.html">csPlane3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#c4d02d3f3f8777687e8b5d8f3181a8be">This2OtherRelative</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;p) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a plane in 'this' space to 'other' space.  <a href="#c4d02d3f3f8777687e8b5d8f3181a8be"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsVector3.html">csVector3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#812d772c7db08d2ac2c17ce9b3c9f048">This2OtherRelative</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert vector v in 'this' space to a vector in 'other' space, relative to local origin.  <a href="#812d772c7db08d2ac2c17ce9b3c9f048"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#07618e95ad9ccd82c3c07e4f6e2914cd">csReversibleTransform</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;o2t, const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;t2o, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;pos)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize transform with both transform matrix and inverse tranform.  <a href="#07618e95ad9ccd82c3c07e4f6e2914cd"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsMatrix3.html">csMatrix3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f500740bc965322a64e7bc714ce7196d">m_t2o</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inverse transformation matrix ('this' to 'other' space).  <a href="#f500740bc965322a64e7bc714ce7196d"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsTransform.html">csTransform</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#60e6ee8df1d444d14fc1f56f6e3fdbc7">operator *</a> (const <a class="el" href="classcsTransform.html">csTransform</a> &amp;t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two transforms, rightmost first.  <a href="#60e6ee8df1d444d14fc1f56f6e3fdbc7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#328636bf6d926c21ae34e256c02ab759">operator *</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two transforms, rightmost first.  <a href="#328636bf6d926c21ae34e256c02ab759"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#30581bc00d5d9453319c51e68e05e5c5">operator *=</a> (<a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two transforms, rightmost first.  <a href="#30581bc00d5d9453319c51e68e05e5c5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#e3764bd4248ab88bd11ffb18d8618af0">operator/</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two transforms, reversing t2 then applying t1.  <a href="#e3764bd4248ab88bd11ffb18d8618af0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsSphere.html">csSphere</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#a58d34ef5a1fe5e67d448efe76b76d84">operator/</a> (const <a class="el" href="classcsSphere.html">csSphere</a> &amp;p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a transformation on a sphere.  <a href="#a58d34ef5a1fe5e67d448efe76b76d84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsPlane3.html">csPlane3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#d0dadc62fcff91455e4483d7de12871f">operator/</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a transformation on a Plane.  <a href="#d0dadc62fcff91455e4483d7de12871f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsVector3.html">csVector3</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f7f65049e697c557c82c21ecd92097e2">operator/</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a transformation on a 3D vector.  <a href="#f7f65049e697c557c82c21ecd92097e2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#c67052dda388b6f7234a0f65aa2ecbe5">operator/=</a> (<a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine two transforms, reversing t2 then applying t1.  <a href="#c67052dda388b6f7234a0f65aa2ecbe5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#5e7fdb59192f24be8c74a6da969b93d6">operator/=</a> (<a class="el" href="classcsPlane3.html">csPlane3</a> &amp;p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a transformation on a Plane.  <a href="#5e7fdb59192f24be8c74a6da969b93d6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#6151843d11cd0c1cf381013acb7b990d">operator/=</a> (<a class="el" href="classcsVector3.html">csVector3</a> &amp;v, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a transformation on a 3D vector.  <a href="#6151843d11cd0c1cf381013acb7b990d"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A class which defines a reversible transformation from one coordinate system to another by maintaining an inverse transformation matrix. 
<p>
This version is similar to <a class="el" href="classcsTransform.html" title="A class which defines a transformation from one coordinate system to another.">csTransform</a> (in fact, it is a sub-class) but it is more efficient if you plan to do inverse transformations often. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Despite that the superclass <a class="el" href="classcsTransform.html" title="A class which defines a transformation from one coordinate system to another.">csTransform</a> transforms from 'other' to 'this' space, commonly <a class="el" href="classcsReversibleTransform.html" title="A class which defines a reversible transformation from one coordinate system to another...">csReversibleTransform</a> instances are named like 'this2other' - e.g. 'object2world' where 'this' space is object space and 'other' space is world space. </dd></dl>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00344">344</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="07618e95ad9ccd82c3c07e4f6e2914cd"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="07618e95ad9ccd82c3c07e4f6e2914cd" args="(const csMatrix3 &amp;o2t, const csMatrix3 &amp;t2o, const csVector3 &amp;pos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">csReversibleTransform::csReversibleTransform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>o2t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2o</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize transform with both transform matrix and inverse tranform. 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00353">353</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="141d3b365df0f36b1fb1b704d2e8dc91"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="141d3b365df0f36b1fb1b704d2e8dc91" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">csReversibleTransform::csReversibleTransform           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize with the identity transformation. 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00360">360</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="f0d26f0b33e7692b5fc018b1e9a7f8c1"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="f0d26f0b33e7692b5fc018b1e9a7f8c1" args="(const csMatrix3 &amp;o2t, const csVector3 &amp;pos)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">csReversibleTransform::csReversibleTransform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>o2t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pos</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize with the given transformation. 
<p>
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. 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00369">369</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="2430185a991ce4493378b2e657828499"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="2430185a991ce4493378b2e657828499" args="(const csTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">csReversibleTransform::csReversibleTransform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsTransform.html">csTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize with the given transformation. 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00375">375</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="262626bbd8bc304f09ab008e67ff7e54"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="262626bbd8bc304f09ab008e67ff7e54" args="(const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">csReversibleTransform::csReversibleTransform           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize with the given transformation. 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00381">381</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

<p>References <a class="el" href="transfrm_8h-source.html#l00348">m_t2o</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="4da7113ed78952f3c0fbec4534595492"></a><!-- doxytag: member="csReversibleTransform::GetInverse" ref="4da7113ed78952f3c0fbec4534595492" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> csReversibleTransform::GetInverse           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the inverse of this transform. 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00399">399</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="9b24e3ccd1874dd74ed48c8ef504db36"></a><!-- doxytag: member="csReversibleTransform::GetT2O" ref="9b24e3ccd1874dd74ed48c8ef504db36" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classcsMatrix3.html">csMatrix3</a>&amp; csReversibleTransform::GetT2O           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get 'this' to 'other' transformation matrix. 
<p>
This corresponds to the inverse of M. 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00388">388</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="7d76fc227ef7e67297899060f70c3273"></a><!-- doxytag: member="csReversibleTransform::GetT2OTranslation" ref="7d76fc227ef7e67297899060f70c3273" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsVector3.html">csVector3</a> csReversibleTransform::GetT2OTranslation           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get 'this' to 'other' translation. 
<p>
This will calculate and return -(M*V). 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00394">394</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="10ce5361544cb5cb59f259f677879769"></a><!-- doxytag: member="csReversibleTransform::LookAt" ref="10ce5361544cb5cb59f259f677879769" args="(const csVector3 &amp;v, const csVector3 &amp;up)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::LookAt           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>up</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Let this transform look at the given (x,y,z) point, using up as the up-vector. 
<p>
'v' should be given relative to the position of the origin of this transform. For example, if the transform is located at pos=(3,1,9) and you want it to look at location loc=(10,2,8) while keeping the orientation so that the up-vector is upwards then you can use: LookAt (loc-pos, <a class="el" href="classcsVector3.html" title="A 3D vector.">csVector3</a> (0, 1, 0)). 
</div>
</div><p>
<a class="anchor" name="cc4167fabbf3b9195f9f24d6312e4bf5"></a><!-- doxytag: member="csReversibleTransform::RotateOther" ref="cc4167fabbf3b9195f9f24d6312e4bf5" args="(const csMatrix3 &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::RotateOther           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the given transformation matrix, in other space, to reorient the transformation. 
<p>
Note: this function rotates the transformation, not the coordinate system. This basically calculates Minv=m*Minv (with Minv the inverse of M). M will be calculated accordingly. 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00486">486</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="36f17397f444e8a98b2b4d086c215df8"></a><!-- doxytag: member="csReversibleTransform::RotateOther" ref="36f17397f444e8a98b2b4d086c215df8" args="(const csVector3 &amp;v, float angle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::RotateOther           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>angle</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rotate the transform by the angle (radians) around the given vector, in other coordinates. 
<p>
Note: this function rotates the transform, not the coordinate system. 
</div>
</div><p>
<a class="anchor" name="b9dc14db5f80245d9ce2025df8e3c470"></a><!-- doxytag: member="csReversibleTransform::RotateThis" ref="b9dc14db5f80245d9ce2025df8e3c470" args="(const csMatrix3 &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::RotateThis           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the given transformation matrix, in this space, to reorient the transformation. 
<p>
Note: this function rotates the transformation, not the coordinate system. This basically calculates Minv=Minv*m (with Minv the inverse of M). M will be calculated accordingly. 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00495">495</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="d774bc775536dd10c2490752e1ebbef5"></a><!-- doxytag: member="csReversibleTransform::RotateThis" ref="d774bc775536dd10c2490752e1ebbef5" args="(const csVector3 &amp;v, float angle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::RotateThis           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>angle</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rotate the transform by the angle (radians) around the given vector, in these coordinates. 
<p>
Note: this function rotates the tranform, not the coordinate system. 
</div>
</div><p>
<a class="anchor" name="7adc3d305ab65cd54d4360d5fcf8c0f1"></a><!-- doxytag: member="csReversibleTransform::SetO2T" ref="7adc3d305ab65cd54d4360d5fcf8c0f1" args="(const csMatrix3 &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void csReversibleTransform::SetO2T           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set 'other' to 'this' transformation matrix. 
<p>
This is the 3x3 matrix M from the transform equation T=M*(O-V). 
<p>Reimplemented from <a class="el" href="classcsTransform.html#8982b8df6c6260a98fbf9ac18ec0a681">csTransform</a>.</p>

<p>Reimplemented in <a class="el" href="classcsOrthoTransform.html#2c075ede84fdeddac05480eb5a39b85d">csOrthoTransform</a>.</p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00406">406</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

<p>References <a class="el" href="matrix3_8h-source.html#l00144">csMatrix3::GetInverse()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a0ae7c7834a8104fa463f9501734337c"></a><!-- doxytag: member="csReversibleTransform::SetT2O" ref="a0ae7c7834a8104fa463f9501734337c" args="(const csMatrix3 &amp;m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void csReversibleTransform::SetT2O           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set 'this' to 'other' transformation matrix. 
<p>
This is equivalent to <a class="el" href="classcsReversibleTransform.html#7adc3d305ab65cd54d4360d5fcf8c0f1" title="Set &#39;other&#39; to &#39;this&#39; transformation matrix.">SetO2T()</a> except that you can now give the inverse matrix. 
<p>Reimplemented in <a class="el" href="classcsOrthoTransform.html#851a3ee657be77e99ba8b926f837eeed">csOrthoTransform</a>.</p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00414">414</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

<p>References <a class="el" href="matrix3_8h-source.html#l00144">csMatrix3::GetInverse()</a>.</p>

</div>
</div><p>
<a class="anchor" name="75a59077b8836a91d9212de002c8fa5c"></a><!-- doxytag: member="csReversibleTransform::This2Other" ref="75a59077b8836a91d9212de002c8fa5c" args="(const csSphere &amp;s) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsSphere.html">csSphere</a> csReversibleTransform::This2Other           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsSphere.html">csSphere</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a sphere in 'this' space to 'other' space. 
<p>

</div>
</div><p>
<a class="anchor" name="22ef53ece215cc70c6fa587544488a4b"></a><!-- doxytag: member="csReversibleTransform::This2Other" ref="22ef53ece215cc70c6fa587544488a4b" args="(const csPlane3 &amp;p, const csVector3 &amp;point, csPlane3 &amp;result) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void csReversibleTransform::This2Other           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a plane in 'this' space to 'other' space. 
<p>
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 which looks like (Minv*N,-(Minv*N)*point) (with Minv the inverse of M). 
</div>
</div><p>
<a class="anchor" name="1e70de98403cd70b2e6365a70a9ccee9"></a><!-- doxytag: member="csReversibleTransform::This2Other" ref="1e70de98403cd70b2e6365a70a9ccee9" args="(const csPlane3 &amp;p) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsPlane3.html">csPlane3</a> csReversibleTransform::This2Other           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a plane in 'this' space to 'other' space. 
<p>
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 (Minv*N,D-N*(M*V)) (with Minv the inverse of M). 
</div>
</div><p>
<a class="anchor" name="0583af0d751ee86b38a29ff5f260facd"></a><!-- doxytag: member="csReversibleTransform::This2Other" ref="0583af0d751ee86b38a29ff5f260facd" args="(const csVector3 &amp;v) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsVector3.html">csVector3</a> csReversibleTransform::This2Other           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert vector v in 'this' space to 'other' space. 
<p>
This is the basic inverse transform operation and it corresponds with the calculation of V+Minv*v (with Minv the inverse of M). 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00422">422</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="c4d02d3f3f8777687e8b5d8f3181a8be"></a><!-- doxytag: member="csReversibleTransform::This2OtherRelative" ref="c4d02d3f3f8777687e8b5d8f3181a8be" args="(const csPlane3 &amp;p) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsPlane3.html">csPlane3</a> csReversibleTransform::This2OtherRelative           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a plane in 'this' space to 'other' space. 
<p>
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 (Minv*N,D) (with Minv the inverse of M). 
</div>
</div><p>
<a class="anchor" name="812d772c7db08d2ac2c17ce9b3c9f048"></a><!-- doxytag: member="csReversibleTransform::This2OtherRelative" ref="812d772c7db08d2ac2c17ce9b3c9f048" args="(const csVector3 &amp;v) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsVector3.html">csVector3</a> csReversibleTransform::This2OtherRelative           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert vector v in 'this' space to a vector in 'other' space, relative to local origin. 
<p>
This calculates and returns Minv*v (with Minv the inverse of M). 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00430">430</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="60e6ee8df1d444d14fc1f56f6e3fdbc7"></a><!-- doxytag: member="csReversibleTransform::operator *" ref="60e6ee8df1d444d14fc1f56f6e3fdbc7" args="(const csTransform &amp;t1, const csReversibleTransform &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsTransform.html">csTransform</a> operator *           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsTransform.html">csTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Combine two transforms, rightmost first. 
<p>
Given the following definitions:<ul>
<li>'t1' expressed as T=t1.M*(O-t1.V)</li><li>'t2' expressed as T=t2.M*(O-t2.V)</li><li>t1.Minv is the inverse of t1.M</li><li>t2.Minv is the inverse of t2.M</li></ul>
<p>
Then this will calculate a new transformation in 't1' as follows: T=(t1.M*t2.M)*(O-(t2.Minv*t1.V+t2.V)). 
<p>Reimplemented from <a class="el" href="classcsTransform.html#60e6ee8df1d444d14fc1f56f6e3fdbc7">csTransform</a>.</p>

</div>
</div><p>
<a class="anchor" name="328636bf6d926c21ae34e256c02ab759"></a><!-- doxytag: member="csReversibleTransform::operator *" ref="328636bf6d926c21ae34e256c02ab759" args="(const csReversibleTransform &amp;t1, const csReversibleTransform &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> operator *           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Combine two transforms, rightmost first. 
<p>
Given the following definitions:<ul>
<li>'t1' expressed as T=t1.M*(O-t1.V)</li><li>'t2' expressed as T=t2.M*(O-t2.V)</li><li>t1.Minv is the inverse of t1.M</li><li>t2.Minv is the inverse of t2.M</li></ul>
<p>
Then this will calculate a new transformation in 't1' as follows: T=(t1.M*t2.M)*(O-(t2.Minv*t1.V+t2.V)). 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00574">574</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="30581bc00d5d9453319c51e68e05e5c5"></a><!-- doxytag: member="csReversibleTransform::operator *=" ref="30581bc00d5d9453319c51e68e05e5c5" args="(csReversibleTransform &amp;t1, const csReversibleTransform &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a>&amp; operator *=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Combine two transforms, rightmost first. 
<p>
Given the following definitions:<ul>
<li>'t1' expressed as T=t1.M*(O-t1.V)</li><li>'t2' expressed as T=t2.M*(O-t2.V)</li><li>t1.Minv is the inverse of t1.M</li><li>t2.Minv is the inverse of t2.M</li></ul>
<p>
Then this will calculate a new transformation in 't1' as follows: T=(t1.M*t2.M)*(O-(t2.Minv*t1.V+t2.V)). 
<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00553">553</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="e3764bd4248ab88bd11ffb18d8618af0"></a><!-- doxytag: member="csReversibleTransform::operator/" ref="e3764bd4248ab88bd11ffb18d8618af0" args="(const csReversibleTransform &amp;t1, const csReversibleTransform &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> operator/           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Combine two transforms, reversing t2 then applying t1. 
<p>
Given the following definitions:<ul>
<li>'t1' expressed as T=t1.M*(O-t1.V)</li><li>'t2' expressed as T=t2.M*(O-t2.V)</li><li>t1.Minv is the inverse of t1.M</li><li>t2.Minv is the inverse of t2.M</li></ul>
<p>
Then this will calculate a new transformation in 't1' as follows: T=(t1.M*t2.Minv)*(O-(t2.M*(t1.V-t2.V))). 
</div>
</div><p>
<a class="anchor" name="a58d34ef5a1fe5e67d448efe76b76d84"></a><!-- doxytag: member="csReversibleTransform::operator/" ref="a58d34ef5a1fe5e67d448efe76b76d84" args="(const csSphere &amp;p, const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsSphere.html">csSphere</a> operator/           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsSphere.html">csSphere</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a transformation on a sphere. 
<p>
This corresponds exactly to calling t.This2Other(p). 
</div>
</div><p>
<a class="anchor" name="d0dadc62fcff91455e4483d7de12871f"></a><!-- doxytag: member="csReversibleTransform::operator/" ref="d0dadc62fcff91455e4483d7de12871f" args="(const csPlane3 &amp;p, const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsPlane3.html">csPlane3</a> operator/           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a transformation on a Plane. 
<p>
This corresponds exactly to calling t.This2Other(p). 
</div>
</div><p>
<a class="anchor" name="f7f65049e697c557c82c21ecd92097e2"></a><!-- doxytag: member="csReversibleTransform::operator/" ref="f7f65049e697c557c82c21ecd92097e2" args="(const csVector3 &amp;v, const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsVector3.html">csVector3</a> operator/           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a transformation on a 3D vector. 
<p>
This corresponds exactly to calling t.This2Other(v). 
</div>
</div><p>
<a class="anchor" name="c67052dda388b6f7234a0f65aa2ecbe5"></a><!-- doxytag: member="csReversibleTransform::operator/=" ref="c67052dda388b6f7234a0f65aa2ecbe5" args="(csReversibleTransform &amp;t1, const csReversibleTransform &amp;t2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a>&amp; operator/=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Combine two transforms, reversing t2 then applying t1. 
<p>
Given the following definitions:<ul>
<li>'t1' expressed as T=t1.M*(O-t1.V)</li><li>'t2' expressed as T=t2.M*(O-t2.V)</li><li>t1.Minv is the inverse of t1.M</li><li>t2.Minv is the inverse of t2.M</li></ul>
<p>
Then this will calculate a new transformation in 't1' as follows: T=(t1.M*t2.Minv)*(O-(t2.M*(t1.V-t2.V))). 
</div>
</div><p>
<a class="anchor" name="5e7fdb59192f24be8c74a6da969b93d6"></a><!-- doxytag: member="csReversibleTransform::operator/=" ref="5e7fdb59192f24be8c74a6da969b93d6" args="(csPlane3 &amp;p, const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsPlane3.html">csPlane3</a>&amp; operator/=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a transformation on a Plane. 
<p>
This corresponds exactly to calling p = t.This2Other(p). 
</div>
</div><p>
<a class="anchor" name="6151843d11cd0c1cf381013acb7b990d"></a><!-- doxytag: member="csReversibleTransform::operator/=" ref="6151843d11cd0c1cf381013acb7b990d" args="(csVector3 &amp;v, const csReversibleTransform &amp;t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsVector3.html">csVector3</a>&amp; operator/=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a transformation on a 3D vector. 
<p>
This corresponds exactly to calling v=t.This2Other(v). 
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="f500740bc965322a64e7bc714ce7196d"></a><!-- doxytag: member="csReversibleTransform::m_t2o" ref="f500740bc965322a64e7bc714ce7196d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsMatrix3.html">csMatrix3</a> <a class="el" href="classcsReversibleTransform.html#f500740bc965322a64e7bc714ce7196d">csReversibleTransform::m_t2o</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Inverse transformation matrix ('this' to 'other' space). 
<p>

<p>Definition at line <a class="el" href="transfrm_8h-source.html#l00348">348</a> of file <a class="el" href="transfrm_8h-source.html">transfrm.h</a>.</p>

<p>Referenced by <a class="el" href="transfrm_8h-source.html#l00381">csReversibleTransform()</a>, <a class="el" href="transfrm_8h-source.html#l00658">csOrthoTransform::SetO2T()</a>, and <a class="el" href="transfrm_8h-source.html#l00666">csOrthoTransform::SetT2O()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>csgeom/<a class="el" href="transfrm_8h-source.html">transfrm.h</a></ul>
<hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>