<!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 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 Pages</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="classes.html"><span>Alphabetical List</span></a></li> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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 <<a class="el" href="transfrm_8h-source.html">csgeom/transfrm.h</a>></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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#262626bbd8bc304f09ab008e67ff7e54">csReversibleTransform</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#2430185a991ce4493378b2e657828499">csReversibleTransform</a> (const <a class="el" href="classcsTransform.html">csTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f0d26f0b33e7692b5fc018b1e9a7f8c1">csReversibleTransform</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &o2t, const <a class="el" href="classcsVector3.html">csVector3</a> &pos)</td></tr> <tr><td class="mdescLeft"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#141d3b365df0f36b1fb1b704d2e8dc91">csReversibleTransform</a> ()</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#4da7113ed78952f3c0fbec4534595492">GetInverse</a> () const </td></tr> <tr><td class="mdescLeft"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#9b24e3ccd1874dd74ed48c8ef504db36">GetT2O</a> () const </td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#7d76fc227ef7e67297899060f70c3273">GetT2OTranslation</a> () const </td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#10ce5361544cb5cb59f259f677879769">LookAt</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v, const <a class="el" href="classcsVector3.html">csVector3</a> &up)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#cc4167fabbf3b9195f9f24d6312e4bf5">RotateOther</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &m)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#36f17397f444e8a98b2b4d086c215df8">RotateOther</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v, float angle)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#b9dc14db5f80245d9ce2025df8e3c470">RotateThis</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &m)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#d774bc775536dd10c2490752e1ebbef5">RotateThis</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v, float angle)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#7adc3d305ab65cd54d4360d5fcf8c0f1">SetO2T</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &m)</td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#a0ae7c7834a8104fa463f9501734337c">SetT2O</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &m)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#75a59077b8836a91d9212de002c8fa5c">This2Other</a> (const <a class="el" href="classcsSphere.html">csSphere</a> &s) const </td></tr> <tr><td class="mdescLeft"> </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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#22ef53ece215cc70c6fa587544488a4b">This2Other</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &p, const <a class="el" href="classcsVector3.html">csVector3</a> &point, <a class="el" href="classcsPlane3.html">csPlane3</a> &result) const </td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#1e70de98403cd70b2e6365a70a9ccee9">This2Other</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &p) const </td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#0583af0d751ee86b38a29ff5f260facd">This2Other</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v) const </td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#c4d02d3f3f8777687e8b5d8f3181a8be">This2OtherRelative</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &p) const </td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#812d772c7db08d2ac2c17ce9b3c9f048">This2OtherRelative</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v) const </td></tr> <tr><td class="mdescLeft"> </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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#07618e95ad9ccd82c3c07e4f6e2914cd">csReversibleTransform</a> (const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &o2t, const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &t2o, const <a class="el" href="classcsVector3.html">csVector3</a> &pos)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f500740bc965322a64e7bc714ce7196d">m_t2o</a></td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#60e6ee8df1d444d14fc1f56f6e3fdbc7">operator *</a> (const <a class="el" href="classcsTransform.html">csTransform</a> &t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t2)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#328636bf6d926c21ae34e256c02ab759">operator *</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t2)</td></tr> <tr><td class="mdescLeft"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#30581bc00d5d9453319c51e68e05e5c5">operator *=</a> (<a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t2)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#e3764bd4248ab88bd11ffb18d8618af0">operator/</a> (const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t2)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#a58d34ef5a1fe5e67d448efe76b76d84">operator/</a> (const <a class="el" href="classcsSphere.html">csSphere</a> &p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#d0dadc62fcff91455e4483d7de12871f">operator/</a> (const <a class="el" href="classcsPlane3.html">csPlane3</a> &p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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> </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#f7f65049e697c557c82c21ecd92097e2">operator/</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &v, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#c67052dda388b6f7234a0f65aa2ecbe5">operator/=</a> (<a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t1, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t2)</td></tr> <tr><td class="mdescLeft"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#5e7fdb59192f24be8c74a6da969b93d6">operator/=</a> (<a class="el" href="classcsPlane3.html">csPlane3</a> &p, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classcsReversibleTransform.html#6151843d11cd0c1cf381013acb7b990d">operator/=</a> (<a class="el" href="classcsVector3.html">csVector3</a> &v, const <a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> &t)</td></tr> <tr><td class="mdescLeft"> </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 & Destructor Documentation</h2> <a class="anchor" name="07618e95ad9ccd82c3c07e4f6e2914cd"></a><!-- doxytag: member="csReversibleTransform::csReversibleTransform" ref="07618e95ad9ccd82c3c07e4f6e2914cd" args="(const csMatrix3 &o2t, const csMatrix3 &t2o, const csVector3 &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> & </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> & </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> & </td> <td class="paramname"> <em>pos</em></td><td> </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> ) </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 &o2t, const csVector3 &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> & </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> & </td> <td class="paramname"> <em>pos</em></td><td> </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 &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> & </td> <td class="paramname"> <em>t</em> </td> <td> ) </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 &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> & </td> <td class="paramname"> <em>t</em> </td> <td> ) </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> ) </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>& csReversibleTransform::GetT2O </td> <td>(</td> <td class="paramname"> </td> <td> ) </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> ) </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 &v, const csVector3 &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> & </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> & </td> <td class="paramname"> <em>up</em></td><td> </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 &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> & </td> <td class="paramname"> <em>m</em> </td> <td> ) </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 &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> & </td> <td class="paramname"> <em>v</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"> <em>angle</em></td><td> </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 &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> & </td> <td class="paramname"> <em>m</em> </td> <td> ) </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 &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> & </td> <td class="paramname"> <em>v</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"> <em>angle</em></td><td> </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 &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> & </td> <td class="paramname"> <em>m</em> </td> <td> ) </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 &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> & </td> <td class="paramname"> <em>m</em> </td> <td> ) </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 'other' to 'this' 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 &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> & </td> <td class="paramname"> <em>s</em> </td> <td> ) </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 &p, const csVector3 &point, csPlane3 &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> & </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> & </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> & </td> <td class="paramname"> <em>result</em></td><td> </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 &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> & </td> <td class="paramname"> <em>p</em> </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> 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 &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> & </td> <td class="paramname"> <em>v</em> </td> <td> ) </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 &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> & </td> <td class="paramname"> <em>p</em> </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 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 &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> & </td> <td class="paramname"> <em>v</em> </td> <td> ) </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 &t1, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t2</em></td><td> </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 &t1, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t2</em></td><td> </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 &t1, const csReversibleTransform &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"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> & </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> & </td> <td class="paramname"> <em>t2</em></td><td> </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 &t1, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t2</em></td><td> </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 &p, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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 &p, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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 &v, const csReversibleTransform &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> & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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 &t1, const csReversibleTransform &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"><a class="el" href="classcsReversibleTransform.html">csReversibleTransform</a> & </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> & </td> <td class="paramname"> <em>t2</em></td><td> </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 &p, const csReversibleTransform &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"><a class="el" href="classcsPlane3.html">csPlane3</a> & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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 &v, const csReversibleTransform &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"><a class="el" href="classcsVector3.html">csVector3</a> & </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> & </td> <td class="paramname"> <em>t</em></td><td> </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>