Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > b3a1f4d91c26f535919e39e25606614a > files > 1890

wt-doc-3.2.3-1.fc18.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Wt: Wt::WMatrix4x4 Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Wt
   &#160;<span id="projectnumber">3.2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</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="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceWt.html">Wt</a>      </li>
      <li class="navelem"><a class="el" href="classWt_1_1WMatrix4x4.html">WMatrix4x4</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">Wt::WMatrix4x4 Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Wt::WMatrix4x4" --><!-- doxytag: inherits="WGenericMatrix&lt; double, 4, 4 &gt;" -->
<p>A value class that describes a 3D affine transformation matrix.  
 <a href="classWt_1_1WMatrix4x4.html#details">More...</a></p>

<p><code>#include &lt;Wt/WMatrix4x4&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Wt::WMatrix4x4:</div>
<div class="dyncontent">
<div class="center"><img src="classWt_1_1WMatrix4x4__inherit__graph.png" border="0" usemap="#Wt_1_1WMatrix4x4_inherit__map" alt="Inheritance graph"/></div>
<map name="Wt_1_1WMatrix4x4_inherit__map" id="Wt_1_1WMatrix4x4_inherit__map">
<area shape="rect" href="classWt_1_1WGenericMatrix.html" title="Wt::WGenericMatrix\&lt; double, 4, 4 \&gt;" alt="" coords="5,5,237,32"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classWt_1_1WMatrix4x4-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a04573deca065c719da5933a5370e2d91">WMatrix4x4</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#a04573deca065c719da5933a5370e2d91"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a85e8ec8c8f80ea1643b0bc72006c63"></a><!-- doxytag: member="Wt::WMatrix4x4::WMatrix4x4" ref="a1a85e8ec8c8f80ea1643b0bc72006c63" args="(const WMatrix4x4 &amp;other)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a1a85e8ec8c8f80ea1643b0bc72006c63">WMatrix4x4</a> (const <a class="el" href="classWt_1_1WMatrix4x4.html">WMatrix4x4</a> &amp;other)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a179ae2bb8dcf43871511e2386e920465">WMatrix4x4</a> (const <a class="el" href="classWt_1_1WGenericMatrix.html">WGenericMatrix</a>&lt; double, 4, 4 &gt; &amp;other)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct for a <a class="el" href="classWt_1_1WGenericMatrix.html" title="A value class that describes a matrix.">WGenericMatrix</a>.  <a href="#a179ae2bb8dcf43871511e2386e920465"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#ae7bb65db266e934915fe8b1ce126eff8">WMatrix4x4</a> (double *d)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a matrix from an array of elements.  <a href="#ae7bb65db266e934915fe8b1ce126eff8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a3e09a062ad58e4ea5a153baddec50621">WMatrix4x4</a> (double m11, double m12, double m13, double m14, double m21, double m22, double m23, double m24, double m31, double m32, double m33, double m34, double m41, double m42, double m43, double m44)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a custom matrix by specifying the parameters.  <a href="#a3e09a062ad58e4ea5a153baddec50621"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adad3c97a21999be0826bc244193ec0c7"></a><!-- doxytag: member="Wt::WMatrix4x4::determinant" ref="adad3c97a21999be0826bc244193ec0c7" args="() const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#adad3c97a21999be0826bc244193ec0c7">determinant</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the determinant. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a271c40069f274452261ca0f0e328700a">flipCoordinates</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Switch between left-hand and right-hand side coordinate systems.  <a href="#a271c40069f274452261ca0f0e328700a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#ab428d169951872f940bfbd05b6223575">frustum</a> (double left, double right, double bottom, double top, double nearPlane, double farPlane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a perspective projection matrix.  <a href="#ab428d169951872f940bfbd05b6223575"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classWt_1_1WMatrix4x4.html">WMatrix4x4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#ad9803d00b3214247229c2e61948a3e3b">inverted</a> (bool *invertible=0) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the inversion of this matrix, if invertible.  <a href="#ad9803d00b3214247229c2e61948a3e3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#acc42a660a8a642498c5e88581238767a">lookAt</a> (double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply a transformation to position a camera.  <a href="#acc42a660a8a642498c5e88581238767a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a82082588cf44d60636cd934a598743d4">perspective</a> (double angle, double aspect, double nearPlane, double farPlane)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a perspective projection matrix for use in OpenGL.  <a href="#a82082588cf44d60636cd934a598743d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a018751f0f4359ccf43fe3e4ca53f20eb">rotate</a> (double angle, double x, double y, double z)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotates the transformation around a random axis.  <a href="#a018751f0f4359ccf43fe3e4ca53f20eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a2cd4dd1510fd69374b8a6bdf4cdffebd">scale</a> (double xFactor, double yFactor)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the transformation.  <a href="#a2cd4dd1510fd69374b8a6bdf4cdffebd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a8074ced26218dd52541abd094faf9815">scale</a> (double x, double y, double z)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the transformation.  <a href="#a8074ced26218dd52541abd094faf9815"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#adba26fe582056591d246e8cbea8cdba7">scale</a> (double factor)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Scales the transformation.  <a href="#adba26fe582056591d246e8cbea8cdba7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a65cea270b294bcf2db233d1f6113cdd0">translate</a> (double x, double y)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Translates the transformation.  <a href="#a65cea270b294bcf2db233d1f6113cdd0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classWt_1_1WMatrix4x4.html#a598fe5520127436df6fdfdf833b8b869">translate</a> (double x, double y, double z)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Translates the transformation.  <a href="#a598fe5520127436df6fdfdf833b8b869"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A value class that describes a 3D affine transformation matrix. </p>
<p>The matrix is a 4x4 matrix encoded using 16 parameters. The matrix stores its data internally in row order.</p>
<p>Normally, a transformation matrix (composed translation/rotation/scale, but without perspective) is of this form: </p>
<div class="fragment"><pre class="fragment"> m00 m01 m02 dx
 m10 m11 m12 dy
 m20 m21 m22 dz
 0   0   0   1
</pre></div><p>In this representation, dx, dy and dz (= m(0, 3), m(1, 3) and m(2, 3)) represent the translation components, and m(<em>x, y</em>) represent a 3D matrix that contains the scale, rotation (and skew) components. The matrix is also capable of representing perspective projections. In that case, the matrix will not match the form depicted above.</p>
<p>In order to calculate the transformed vector w of a 3D vector v by the transformation contained in matrix T, v will be left-multiplied by T: </p>
<div class="fragment"><pre class="fragment"> w = T * v;
</pre></div><p> In the formula above, v and w are homogenous 3D column vectors (x, y, z, w), equal to (x/w, y/w, z/w, 1). In normal use cases w is 1, except for vectors that were transformed by a perspective projection matrix.</p>
<p>The transformation is used to represent a tansformed coordinate system, and provides methods to <a class="el" href="classWt_1_1WMatrix4x4.html#a018751f0f4359ccf43fe3e4ca53f20eb" title="Rotates the transformation around a random axis.">rotate()</a>, <a class="el" href="classWt_1_1WMatrix4x4.html#a2cd4dd1510fd69374b8a6bdf4cdffebd" title="Scales the transformation.">scale()</a> or <a class="el" href="classWt_1_1WMatrix4x4.html#a65cea270b294bcf2db233d1f6113cdd0" title="Translates the transformation.">translate()</a> this coordinate system.</p>
<p>This matrix class is matched to OpenGL's coordinate system and matrix notation. The rotate, translate, scale, lookAt, perspective, frustum and ortho methods of this class behave exactly like their OpenGL equivalents. The only difference is that the storage of this matrix is row-major, while OpenGL uses column-major. This should only be a concern if you need to access the raw data of the matrix, in which case you should use <a class="el" href="classWt_1_1WGenericMatrix.html#a259f772b9ff66a343e359127f4829090" title="Returns the transposed of the matrix.">transposed()</a>.<a class="el" href="classWt_1_1WGenericMatrix.html#a4e9300685974b67610b9f6ad437a5ab4" title="Returns a reference to the internal data store.">data()</a> instead. When WWebGL uses this class, it sends the data in the correct order to the client. </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a04573deca065c719da5933a5370e2d91"></a><!-- doxytag: member="Wt::WMatrix4x4::WMatrix4x4" ref="a04573deca065c719da5933a5370e2d91" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::WMatrix4x4::WMatrix4x4 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor. </p>
<p>Creates the identity transformation matrix. </p>

</div>
</div>
<a class="anchor" id="a179ae2bb8dcf43871511e2386e920465"></a><!-- doxytag: member="Wt::WMatrix4x4::WMatrix4x4" ref="a179ae2bb8dcf43871511e2386e920465" args="(const WGenericMatrix&lt; double, 4, 4 &gt; &amp;other)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::WMatrix4x4::WMatrix4x4 </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classWt_1_1WGenericMatrix.html">WGenericMatrix</a>&lt; double, 4, 4 &gt; &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct for a <a class="el" href="classWt_1_1WGenericMatrix.html" title="A value class that describes a matrix.">WGenericMatrix</a>. </p>
<p>Creates the identity transformation matrix. As we inherit from <a class="el" href="classWt_1_1WGenericMatrix.html" title="A value class that describes a matrix.">WGenericMatrix</a>, most overloaded operators create a <a class="el" href="classWt_1_1WGenericMatrix.html" title="A value class that describes a matrix.">WGenericMatrix</a>. This implicit constructor ensures that you will not notice this. </p>

</div>
</div>
<a class="anchor" id="ae7bb65db266e934915fe8b1ce126eff8"></a><!-- doxytag: member="Wt::WMatrix4x4::WMatrix4x4" ref="ae7bb65db266e934915fe8b1ce126eff8" args="(double *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::WMatrix4x4::WMatrix4x4 </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>d</em></td><td>)</td>
          <td><code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructs a matrix from an array of elements. </p>
<p>The input array is assumed to be in row-major order. If elements is 0, the matrix is not initialized. </p>

</div>
</div>
<a class="anchor" id="a3e09a062ad58e4ea5a153baddec50621"></a><!-- doxytag: member="Wt::WMatrix4x4::WMatrix4x4" ref="a3e09a062ad58e4ea5a153baddec50621" args="(double m11, double m12, double m13, double m14, double m21, double m22, double m23, double m24, double m31, double m32, double m33, double m34, double m41, double m42, double m43, double m44)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Wt::WMatrix4x4::WMatrix4x4 </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m11</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m12</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m13</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m14</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m21</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m22</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m23</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m24</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m31</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m32</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m33</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m34</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m41</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m42</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m43</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>m44</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct a custom matrix by specifying the parameters. </p>
<p>Creates a matrix from the specified parameters. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a271c40069f274452261ca0f0e328700a"></a><!-- doxytag: member="Wt::WMatrix4x4::flipCoordinates" ref="a271c40069f274452261ca0f0e328700a" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::flipCoordinates </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Switch between left-hand and right-hand side coordinate systems. </p>
<p>Equivalent to scale(1, -1, -1) </p>

</div>
</div>
<a class="anchor" id="ab428d169951872f940bfbd05b6223575"></a><!-- doxytag: member="Wt::WMatrix4x4::frustum" ref="ab428d169951872f940bfbd05b6223575" args="(double left, double right, double bottom, double top, double nearPlane, double farPlane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::frustum </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>left</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>right</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>bottom</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>top</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>nearPlane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>farPlane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct a perspective projection matrix. </p>
<p>This function constructs a perspective projection where the camera is located in the origin. The visible volume is determined by whatever that is visible when looking from the origin through the rectangular 'window' defined by the coordinates (l, b, n) and (r, t, n) (parallel to the XY plane). The zone is further delimited by the near and the far clipping planes.</p>
<p>The perspective matrix (P) is right-multiplied with the current transformation matrix (M): M * P. Usually, you will want M to be the identity matrix when using this method. </p>

</div>
</div>
<a class="anchor" id="ad9803d00b3214247229c2e61948a3e3b"></a><!-- doxytag: member="Wt::WMatrix4x4::inverted" ref="ad9803d00b3214247229c2e61948a3e3b" args="(bool *invertible=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classWt_1_1WMatrix4x4.html">WMatrix4x4</a> WMatrix4x4::inverted </td>
          <td>(</td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>invertible</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the inversion of this matrix, if invertible. </p>
<p>If invertible is not 0, it will contain a bool that indicates if the operation succeeded and the inverse matrix is returned. Else, this method returns the unit matrix. </p>

</div>
</div>
<a class="anchor" id="acc42a660a8a642498c5e88581238767a"></a><!-- doxytag: member="Wt::WMatrix4x4::lookAt" ref="acc42a660a8a642498c5e88581238767a" args="(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::lookAt </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>eyeX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>eyeY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>eyeZ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>centerX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>centerY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>centerZ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>upX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>upY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>upZ</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Apply a transformation to position a camera. </p>
<p>(eyeX, eyeY, eyeZ) is the position of the camera.</p>
<p>The camera looks at (centerX, centerY, centerZ).</p>
<p>(upX, upY, upZ) is a vector that is the direction of the up vector.</p>
<p>This method applies a rotation and translation transformation to the current matrix so that the given eye becomes (0, 0, 0), the center point is on the negative Z axis, and the up vector lies in the X=0 plane, with its Y component in the positive Y axis direction.</p>
<p>The up vector must not be parallel to the line between eye and center. The vectors will be normalized and are not required to be perpendicular.</p>
<p>If the lookat transformation matrix is M, and the current value of the Matrix4x4 matrix is T, the resulting matrix after lookAt returns will be M * T.</p>
<p>This matrix is often used in conjunction with the <a class="el" href="classWt_1_1WMatrix4x4.html#a82082588cf44d60636cd934a598743d4" title="Construct a perspective projection matrix for use in OpenGL.">perspective()</a> method: </p>
<div class="fragment"><pre class="fragment"> <span class="comment">// First, apply the lookAt transformation</span>
 projectionMatrix.lookAt(1, 1, 1, 0, 0, 0, 0, 1, 0);
 <span class="comment">// Then apply some perspective</span>
 projectionMatrix.perspective(90, aspect, 0.1, 10);
</pre></div> 
</div>
</div>
<a class="anchor" id="a82082588cf44d60636cd934a598743d4"></a><!-- doxytag: member="Wt::WMatrix4x4::perspective" ref="a82082588cf44d60636cd934a598743d4" args="(double angle, double aspect, double nearPlane, double farPlane)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::perspective </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>angle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>aspect</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>nearPlane</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>farPlane</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct a perspective projection matrix for use in OpenGL. </p>
<p>The camera is located in the origin and look in the direction of the negative Z axis.</p>
<p>Angle is the vertical view angle, in degrees. Aspect is the aspect ratio of the viewport, and near and far are the distances of the front and rear clipping plane from the camera.</p>
<p>The perspective matrix (P) is right-multiplied with the current transformation matrix (M): M * P. Usually, you will want M to be the identity matrix when using this method. </p>

</div>
</div>
<a class="anchor" id="a018751f0f4359ccf43fe3e4ca53f20eb"></a><!-- doxytag: member="Wt::WMatrix4x4::rotate" ref="a018751f0f4359ccf43fe3e4ca53f20eb" args="(double angle, double x, double y, double z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::rotate </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>angle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rotates the transformation around a random axis. </p>
<p>Applies a rotation to the current transformation matrix, over <code>angle</code> degrees. The current matrix (M) is right-multiplied by the rotation matrix: M = M * R </p>

</div>
</div>
<a class="anchor" id="a2cd4dd1510fd69374b8a6bdf4cdffebd"></a><!-- doxytag: member="Wt::WMatrix4x4::scale" ref="a2cd4dd1510fd69374b8a6bdf4cdffebd" args="(double xFactor, double yFactor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::scale </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>xFactor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>yFactor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the transformation. </p>
<p>Equivalent to scale(xFactor, yFactor, 1);</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1WMatrix4x4.html#a8074ced26218dd52541abd094faf9815" title="Scales the transformation.">scale(double, double, double)</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a8074ced26218dd52541abd094faf9815"></a><!-- doxytag: member="Wt::WMatrix4x4::scale" ref="a8074ced26218dd52541abd094faf9815" args="(double x, double y, double z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::scale </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the transformation. </p>
<p>Equivalent to M * S where M is the current transformation and S is </p>
<div class="fragment"><pre class="fragment"> x 0 0 0
 0 y 0 0
 0 0 z 0
 0 0 0 1
</pre></div> 
</div>
</div>
<a class="anchor" id="adba26fe582056591d246e8cbea8cdba7"></a><!-- doxytag: member="Wt::WMatrix4x4::scale" ref="adba26fe582056591d246e8cbea8cdba7" args="(double factor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::scale </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>factor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Scales the transformation. </p>
<p>Equivalent to scale(factor, factor, factor);</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classWt_1_1WMatrix4x4.html#a8074ced26218dd52541abd094faf9815" title="Scales the transformation.">scale(double, double, double)</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a65cea270b294bcf2db233d1f6113cdd0"></a><!-- doxytag: member="Wt::WMatrix4x4::translate" ref="a65cea270b294bcf2db233d1f6113cdd0" args="(double x, double y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::translate </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Translates the transformation. </p>
<p>Equivalent to translate(x, y, 0) </p>

</div>
</div>
<a class="anchor" id="a598fe5520127436df6fdfdf833b8b869"></a><!-- doxytag: member="Wt::WMatrix4x4::translate" ref="a598fe5520127436df6fdfdf833b8b869" args="(double x, double y, double z)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Wt::WMatrix4x4::translate </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Translates the transformation. </p>
<p>Translates the current transformation.</p>
<p>Equivalent to M * T where M is the current transformation matrix and T is: </p>
<div class="fragment"><pre class="fragment"> 1 0 0 x
 0 1 0 y
 0 0 1 z
 0 0 0 1
</pre></div> 
</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by&nbsp;<a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>