Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 04e5d8c10ae76748689b4e7f48e0fa33 > files > 602

libogre5-devel-1.0.0-1mdk.i586.rpm

<html>
<head>
<title>OgreMatrix4.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<link type="text/css" rel="stylesheet" href="style.css">
</head>

<body>
<!-- Generated by Doxygen 1.3.6 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>OgreMatrix4.h</h1><a href="OgreMatrix4_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">-----------------------------------------------------------------------------</span>
00003 <span class="comment">This source file is part of OGRE</span>
00004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
00005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
00006 <span class="comment"></span>
00007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
00008 <span class="comment">Also see acknowledgements in Readme.html</span>
00009 <span class="comment"></span>
00010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
00011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
00012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
00013 <span class="comment">version.</span>
00014 <span class="comment"></span>
00015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
00016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
00017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
00018 <span class="comment"></span>
00019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
00020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
00021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
00022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
00023 <span class="comment">-----------------------------------------------------------------------------</span>
00024 <span class="comment">*/</span>
00025 <span class="preprocessor">#ifndef __Matrix4__</span>
00026 <span class="preprocessor"></span><span class="preprocessor">#define __Matrix4__</span>
00027 <span class="preprocessor"></span>
00028 <span class="comment">// Precompiler options</span>
00029 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
00030 
00031 <span class="preprocessor">#include "<a class="code" href="OgreVector3_8h.html">OgreVector3.h</a>"</span>
00032 <span class="preprocessor">#include "<a class="code" href="OgreMatrix3_8h.html">OgreMatrix3.h</a>"</span>
00033 <span class="preprocessor">#include "<a class="code" href="OgreVector4_8h.html">OgreVector4.h</a>"</span>
00034 <span class="preprocessor">#include "<a class="code" href="OgrePlane_8h.html">OgrePlane.h</a>"</span>
00035 <span class="keyword">namespace </span>Ogre
00036 {
<a name="l00069"></a><a class="code" href="classOgre_1_1Matrix4.html">00069</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a13">_OgreExport</a> Matrix4
00070     {
00071     <span class="keyword">protected</span>:
00073         <span class="keyword">union </span>{
<a name="l00074"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">00074</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> m[4][4];
<a name="l00075"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p1">00075</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> _m[16];
00076         };
00077     <span class="keyword">public</span>:
<a name="l00082"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a0">00082</a>         <span class="keyword">inline</span> Matrix4()
00083         {
00084         }
00085 
<a name="l00086"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a1">00086</a>         <span class="keyword">inline</span> Matrix4(
00087             <a class="code" href="namespaceOgre.html#a420">Real</a> m00, <a class="code" href="namespaceOgre.html#a420">Real</a> m01, <a class="code" href="namespaceOgre.html#a420">Real</a> m02, <a class="code" href="namespaceOgre.html#a420">Real</a> m03,
00088             <a class="code" href="namespaceOgre.html#a420">Real</a> m10, <a class="code" href="namespaceOgre.html#a420">Real</a> m11, <a class="code" href="namespaceOgre.html#a420">Real</a> m12, <a class="code" href="namespaceOgre.html#a420">Real</a> m13,
00089             <a class="code" href="namespaceOgre.html#a420">Real</a> m20, <a class="code" href="namespaceOgre.html#a420">Real</a> m21, <a class="code" href="namespaceOgre.html#a420">Real</a> m22, <a class="code" href="namespaceOgre.html#a420">Real</a> m23,
00090             <a class="code" href="namespaceOgre.html#a420">Real</a> m30, <a class="code" href="namespaceOgre.html#a420">Real</a> m31, <a class="code" href="namespaceOgre.html#a420">Real</a> m32, <a class="code" href="namespaceOgre.html#a420">Real</a> m33 )
00091         {
00092             m[0][0] = m00;
00093             m[0][1] = m01;
00094             m[0][2] = m02;
00095             m[0][3] = m03;
00096             m[1][0] = m10;
00097             m[1][1] = m11;
00098             m[1][2] = m12;
00099             m[1][3] = m13;
00100             m[2][0] = m20;
00101             m[2][1] = m21;
00102             m[2][2] = m22;
00103             m[2][3] = m23;
00104             m[3][0] = m30;
00105             m[3][1] = m31;
00106             m[3][2] = m32;
00107             m[3][3] = m33;
00108         }
00109 
<a name="l00110"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a2">00110</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a>* operator [] ( size_t iRow )
00111         {
00112             assert( iRow &lt; 4 );
00113             <span class="keywordflow">return</span> m[iRow];
00114         }
00115 
<a name="l00116"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a3">00116</a>         <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a420">Real</a> *<span class="keyword">const</span> operator [] ( size_t iRow )<span class="keyword"> const</span>
00117 <span class="keyword">        </span>{
00118             assert( iRow &lt; 4 );
00119             <span class="keywordflow">return</span> m[iRow];
00120         }
00121 
<a name="l00122"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a4">00122</a>         <span class="keyword">inline</span> Matrix4 concatenate(<span class="keyword">const</span> Matrix4 &amp;m2)<span class="keyword"> const</span>
00123 <span class="keyword">        </span>{
00124             Matrix4 r;
00125             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = m[0][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] + m[0][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] + m[0][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] + m[0][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00126             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = m[0][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] + m[0][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] + m[0][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] + m[0][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00127             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = m[0][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] + m[0][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] + m[0][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] + m[0][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00128             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = m[0][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] + m[0][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] + m[0][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] + m[0][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00129 
00130             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = m[1][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] + m[1][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] + m[1][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] + m[1][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00131             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = m[1][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] + m[1][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] + m[1][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] + m[1][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00132             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = m[1][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] + m[1][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] + m[1][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] + m[1][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00133             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = m[1][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] + m[1][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] + m[1][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] + m[1][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00134 
00135             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = m[2][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] + m[2][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] + m[2][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] + m[2][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00136             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = m[2][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] + m[2][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] + m[2][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] + m[2][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00137             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = m[2][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] + m[2][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] + m[2][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] + m[2][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00138             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = m[2][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] + m[2][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] + m[2][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] + m[2][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00139 
00140             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = m[3][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] + m[3][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] + m[3][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] + m[3][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00141             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = m[3][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] + m[3][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] + m[3][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] + m[3][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00142             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = m[3][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] + m[3][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] + m[3][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] + m[3][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00143             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = m[3][0] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] + m[3][1] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] + m[3][2] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] + m[3][3] * m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00144 
00145             <span class="keywordflow">return</span> r;
00146         }
00147 
<a name="l00150"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a5">00150</a>         <span class="keyword">inline</span> Matrix4 <a class="code" href="namespaceOgre.html#a611">operator * </a>( <span class="keyword">const</span> Matrix4 &amp;m2 )<span class="keyword"> const</span>
00151 <span class="keyword">        </span>{
00152             <span class="keywordflow">return</span> concatenate( m2 );
00153         }
00154 
<a name="l00164"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a6">00164</a>         <span class="keyword">inline</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> <a class="code" href="namespaceOgre.html#a611">operator * </a>( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> &amp;v )<span class="keyword"> const</span>
00165 <span class="keyword">        </span>{
00166             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> r;
00167 
00168             <a class="code" href="namespaceOgre.html#a420">Real</a> fInvW = 1.0 / ( m[3][0] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[3][1] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[3][2] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> + m[3][3] );
00169 
00170             r.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = ( m[0][0] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[0][1] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[0][2] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> + m[0][3] ) * fInvW;
00171             r.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = ( m[1][0] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[1][1] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[1][2] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> + m[1][3] ) * fInvW;
00172             r.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = ( m[2][0] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[2][1] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[2][2] * v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> + m[2][3] ) * fInvW;
00173 
00174             <span class="keywordflow">return</span> r;
00175         }
<a name="l00176"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a7">00176</a>         <span class="keyword">inline</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a> <a class="code" href="namespaceOgre.html#a611">operator * </a>(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a>&amp; v)<span class="keyword"> const</span>
00177 <span class="keyword">        </span>{
00178             <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a>(
00179                 m[0][0] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a> + m[0][1] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a> + m[0][2] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a> + m[0][3] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>, 
00180                 m[1][0] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a> + m[1][1] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a> + m[1][2] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a> + m[1][3] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>,
00181                 m[2][0] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a> + m[2][1] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a> + m[2][2] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a> + m[2][3] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>,
00182                 m[3][0] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a> + m[3][1] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a> + m[3][2] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a> + m[3][3] * v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>
00183                 );
00184         }
<a name="l00185"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a8">00185</a>         <span class="keyword">inline</span> <a class="code" href="classOgre_1_1Plane.html">Plane</a> <a class="code" href="namespaceOgre.html#a611">operator * </a>(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Plane.html">Plane</a>&amp; p)<span class="keyword"> const</span>
00186 <span class="keyword">        </span>{
00187             <a class="code" href="classOgre_1_1Plane.html">Plane</a> ret;
00188             ret.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> =
00189                 m[0][0] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[0][1] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[0][2] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00190             ret.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = 
00191                 m[1][0] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[1][1] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[1][2] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00192             ret.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = 
00193                 m[2][0] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + m[2][1] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + m[2][2] * p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00194             <a class="code" href="classOgre_1_1Vector3.html">Vector3</a> pt = p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a> * -p.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo1">d</a>;
00195             pt = *<span class="keyword">this</span> * pt;
00196             ret.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo1">d</a> = - pt.dotProduct(ret.<a class="code" href="classOgre_1_1Plane.html#Ogre_1_1Planeo0">normal</a>);
00197             <span class="keywordflow">return</span> ret;
00198         }
00199 
00200 
<a name="l00203"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a9">00203</a>         <span class="keyword">inline</span> Matrix4 operator + ( <span class="keyword">const</span> Matrix4 &amp;m2 )<span class="keyword"> const</span>
00204 <span class="keyword">        </span>{
00205             Matrix4 r;
00206 
00207             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = m[0][0] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0];
00208             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = m[0][1] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1];
00209             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = m[0][2] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2];
00210             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = m[0][3] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3];
00211 
00212             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = m[1][0] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0];
00213             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = m[1][1] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1];
00214             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = m[1][2] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2];
00215             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = m[1][3] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3];
00216 
00217             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = m[2][0] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0];
00218             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = m[2][1] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1];
00219             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = m[2][2] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2];
00220             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = m[2][3] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3];
00221 
00222             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = m[3][0] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00223             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = m[3][1] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00224             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = m[3][2] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00225             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = m[3][3] + m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00226 
00227             <span class="keywordflow">return</span> r;
00228         }
00229 
<a name="l00232"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a10">00232</a>         <span class="keyword">inline</span> Matrix4 operator - ( <span class="keyword">const</span> Matrix4 &amp;m2 )<span class="keyword"> const</span>
00233 <span class="keyword">        </span>{
00234             Matrix4 r;
00235             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = m[0][0] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0];
00236             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = m[0][1] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1];
00237             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = m[0][2] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2];
00238             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = m[0][3] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3];
00239 
00240             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = m[1][0] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0];
00241             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = m[1][1] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1];
00242             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = m[1][2] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2];
00243             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = m[1][3] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3];
00244 
00245             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = m[2][0] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0];
00246             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = m[2][1] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1];
00247             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = m[2][2] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2];
00248             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = m[2][3] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3];
00249 
00250             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = m[3][0] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0];
00251             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = m[3][1] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1];
00252             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = m[3][2] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2];
00253             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = m[3][3] - m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3];
00254 
00255             <span class="keywordflow">return</span> r;
00256         }
00257 
<a name="l00260"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a11">00260</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a617">operator == </a>( <span class="keyword">const</span> Matrix4&amp; m2 )<span class="keyword"> const</span>
00261 <span class="keyword">        </span>{
00262             <span class="keywordflow">if</span>( 
00263                 m[0][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] || m[0][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] || m[0][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] || m[0][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] ||
00264                 m[1][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] || m[1][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] || m[1][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] || m[1][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] ||
00265                 m[2][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] || m[2][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] || m[2][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] || m[2][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] ||
00266                 m[3][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] || m[3][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] || m[3][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] || m[3][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] )
00267                 <span class="keywordflow">return</span> <span class="keyword">false</span>;
00268             <span class="keywordflow">return</span> <span class="keyword">true</span>;
00269         }
00270 
<a name="l00273"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a12">00273</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a618">operator != </a>( Matrix4&amp; m2 )<span class="keyword"> const</span>
00274 <span class="keyword">        </span>{
00275             <span class="keywordflow">if</span>( 
00276                 m[0][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] || m[0][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] || m[0][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] || m[0][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] ||
00277                 m[1][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] || m[1][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] || m[1][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] || m[1][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] ||
00278                 m[2][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] || m[2][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] || m[2][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] || m[2][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] ||
00279                 m[3][0] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] || m[3][1] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] || m[3][2] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] || m[3][3] != m2.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] )
00280                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
00281             <span class="keywordflow">return</span> <span class="keyword">false</span>;
00282         }
00283 
<a name="l00286"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a13">00286</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> operator = ( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Matrix3.html">Matrix3</a>&amp; mat3 )
00287         {
00288             m[0][0] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][0]; m[0][1] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][1]; m[0][2] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][2];
00289             m[1][0] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][0]; m[1][1] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][1]; m[1][2] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][2];
00290             m[2][0] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][0]; m[2][1] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][1]; m[2][2] = mat3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][2];
00291         }
00292 
<a name="l00293"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a14">00293</a>         <span class="keyword">inline</span> Matrix4 transpose(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
00294 <span class="keyword">        </span>{
00295             <span class="keywordflow">return</span> Matrix4(m[0][0], m[1][0], m[2][0], m[3][0],
00296                            m[0][1], m[1][1], m[2][1], m[3][1],
00297                            m[0][2], m[1][2], m[2][2], m[3][2],
00298                            m[0][3], m[1][3], m[2][3], m[3][3]);
00299         }
00300 
00301         <span class="comment">/*</span>
00302 <span class="comment">        -----------------------------------------------------------------------</span>
00303 <span class="comment">        Translation Transformation</span>
00304 <span class="comment">        -----------------------------------------------------------------------</span>
00305 <span class="comment">        */</span>
<a name="l00308"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a15">00308</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setTrans( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; v )
00309         {
00310             m[0][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
00311             m[1][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
00312             m[2][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00313         }
00314 
<a name="l00317"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a16">00317</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeTrans( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; v )
00318         {
00319             m[0][0] = 1.0; m[0][1] = 0.0; m[0][2] = 0.0; m[0][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
00320             m[1][0] = 0.0; m[1][1] = 1.0; m[1][2] = 0.0; m[1][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
00321             m[2][0] = 0.0; m[2][1] = 0.0; m[2][2] = 1.0; m[2][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00322             m[3][0] = 0.0; m[3][1] = 0.0; m[3][2] = 0.0; m[3][3] = 1.0;
00323         }
00324 
<a name="l00325"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a17">00325</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeTrans( <a class="code" href="namespaceOgre.html#a420">Real</a> tx, <a class="code" href="namespaceOgre.html#a420">Real</a> ty, <a class="code" href="namespaceOgre.html#a420">Real</a> tz )
00326         {
00327             m[0][0] = 1.0; m[0][1] = 0.0; m[0][2] = 0.0; m[0][3] = tx;
00328             m[1][0] = 0.0; m[1][1] = 1.0; m[1][2] = 0.0; m[1][3] = ty;
00329             m[2][0] = 0.0; m[2][1] = 0.0; m[2][2] = 1.0; m[2][3] = tz;
00330             m[3][0] = 0.0; m[3][1] = 0.0; m[3][2] = 0.0; m[3][3] = 1.0;
00331         }
00332 
<a name="l00335"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4e0">00335</a>         <span class="keyword">inline</span> <span class="keyword">static</span> Matrix4 getTrans( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; v )
00336         {
00337             Matrix4 r;
00338 
00339             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
00340             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
00341             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00342             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = 1.0;
00343 
00344             <span class="keywordflow">return</span> r;
00345         }
00346 
<a name="l00349"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4e1">00349</a>         <span class="keyword">inline</span> <span class="keyword">static</span> Matrix4 getTrans( <a class="code" href="namespaceOgre.html#a420">Real</a> t_x, <a class="code" href="namespaceOgre.html#a420">Real</a> t_y, <a class="code" href="namespaceOgre.html#a420">Real</a> t_z )
00350         {
00351             Matrix4 r;
00352 
00353             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = t_x;
00354             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = t_y;
00355             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = 1.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = t_z;
00356             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = 1.0;
00357 
00358             <span class="keywordflow">return</span> r;
00359         }
00360 
00361         <span class="comment">/*</span>
00362 <span class="comment">        -----------------------------------------------------------------------</span>
00363 <span class="comment">        Scale Transformation</span>
00364 <span class="comment">        -----------------------------------------------------------------------</span>
00365 <span class="comment">        */</span>
<a name="l00368"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a18">00368</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> setScale( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; v )
00369         {
00370             m[0][0] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
00371             m[1][1] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
00372             m[2][2] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
00373         }
00374 
<a name="l00377"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4e2">00377</a>         <span class="keyword">inline</span> <span class="keyword">static</span> Matrix4 getScale( <span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector3.html">Vector3</a>&amp; v )
00378         {
00379             Matrix4 r;
00380             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = 0.0;
00381             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = 0.0;
00382             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = v.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = 0.0;
00383             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = 1.0;
00384 
00385             <span class="keywordflow">return</span> r;
00386         }
00387 
<a name="l00390"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4e3">00390</a>         <span class="keyword">inline</span> <span class="keyword">static</span> Matrix4 getScale( <a class="code" href="namespaceOgre.html#a420">Real</a> s_x, <a class="code" href="namespaceOgre.html#a420">Real</a> s_y, <a class="code" href="namespaceOgre.html#a420">Real</a> s_z )
00391         {
00392             Matrix4 r;
00393             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][0] = s_x; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[0][3] = 0.0;
00394             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][1] = s_y; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[1][3] = 0.0;
00395             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][2] = s_z; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[2][3] = 0.0;
00396             r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][0] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][1] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][2] = 0.0; r.<a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4p0">m</a>[3][3] = 1.0;
00397 
00398             <span class="keywordflow">return</span> r;
00399         }
00400 
<a name="l00404"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a19">00404</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> extract3x3Matrix(<a class="code" href="classOgre_1_1Matrix3.html">Matrix3</a>&amp; m3x3)<span class="keyword"> const</span>
00405 <span class="keyword">        </span>{
00406             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][0] = m[0][0];
00407             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][1] = m[0][1];
00408             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[0][2] = m[0][2];
00409             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][0] = m[1][0];
00410             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][1] = m[1][1];
00411             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[1][2] = m[1][2];
00412             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][0] = m[2][0];
00413             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][1] = m[2][1];
00414             m3x3.<a class="code" href="classOgre_1_1Matrix3.html#Ogre_1_1Matrix3p0">m</a>[2][2] = m[2][2];
00415 
00416         }
00417 
<a name="l00418"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4s0">00418</a>         <span class="keyword">static</span> <span class="keyword">const</span> Matrix4 ZERO;
<a name="l00419"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4s1">00419</a>         <span class="keyword">static</span> <span class="keyword">const</span> Matrix4 IDENTITY;
<a name="l00422"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4s2">00422</a>         <span class="keyword">static</span> <span class="keyword">const</span> Matrix4 CLIPSPACE2DTOIMAGESPACE;
00423 
<a name="l00424"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4a20">00424</a>         <span class="keyword">inline</span> Matrix4 <a class="code" href="namespaceOgre.html#a611">operator*</a>(<a class="code" href="namespaceOgre.html#a420">Real</a> scalar)
00425         {
00426             <span class="keywordflow">return</span> Matrix4(
00427                 scalar*m[0][0], scalar*m[0][1], scalar*m[0][2], scalar*m[0][3],
00428                 scalar*m[1][0], scalar*m[1][1], scalar*m[1][2], scalar*m[1][3],
00429                 scalar*m[2][0], scalar*m[2][1], scalar*m[2][2], scalar*m[2][3],
00430                 scalar*m[3][0], scalar*m[3][1], scalar*m[3][2], scalar*m[3][3]);
00431         }
00432 
00435         <span class="keyword">inline</span> <a class="code" href="class__OgreExport.html">_OgreExport</a> <span class="keyword">friend</span> std::ostream&amp; <span class="keyword">operator</span> &lt;&lt;
<a name="l00436"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4n0">00436</a>             ( std::ostream&amp; o, <span class="keyword">const</span> Matrix4&amp; m )
00437         {
00438             o &lt;&lt; <span class="stringliteral">"Matrix4("</span>;
00439             <span class="keywordflow">for</span> (size_t i = 0; i &lt; 4; ++i)
00440             {
00441                 o &lt;&lt; <span class="stringliteral">" row"</span> &lt;&lt; (<span class="keywordtype">unsigned</span>)i &lt;&lt; <span class="stringliteral">"{"</span>;
00442                 <span class="keywordflow">for</span>(size_t j = 0; j &lt; 4; ++j)
00443                 {
00444                     o &lt;&lt; m[i][j] &lt;&lt; <span class="stringliteral">" "</span>;
00445                 }
00446                 o &lt;&lt; <span class="stringliteral">"}"</span>;
00447             }
00448             o &lt;&lt; <span class="stringliteral">")"</span>;
00449             <span class="keywordflow">return</span> o;
00450         }
00451         
00452         Matrix4 adjoint() <span class="keyword">const</span>;
00453         <a class="code" href="namespaceOgre.html#a420">Real</a> determinant() <span class="keyword">const</span>;
00454         Matrix4 inverse() <span class="keyword">const</span>;
00455 
00456     };
00457 
00458     <span class="comment">/* Removed from Vector4 and made a non-member here because otherwise</span>
00459 <span class="comment">       OgreMatrix4.h and OgreVector4.h have to try to include and inline each </span>
00460 <span class="comment">       other, which frankly doesn't work ;)</span>
00461 <span class="comment">   */</span>
<a name="l00462"></a><a class="code" href="namespaceOgre.html#a615">00462</a>     <span class="keyword">inline</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a> <a class="code" href="namespaceOgre.html#a611">operator * </a>(<span class="keyword">const</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a>&amp; v, <span class="keyword">const</span> Matrix4&amp; mat)
00463     {
00464         <span class="keywordflow">return</span> <a class="code" href="classOgre_1_1Vector4.html">Vector4</a>(
00465             v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a>*mat[0][0] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a>*mat[1][0] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a>*mat[2][0] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>*mat[3][0],
00466             v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a>*mat[0][1] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a>*mat[1][1] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a>*mat[2][1] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>*mat[3][1],
00467             v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a>*mat[0][2] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a>*mat[1][2] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a>*mat[2][2] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>*mat[3][2],
00468             v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o0">x</a>*mat[0][3] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o1">y</a>*mat[1][3] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o2">z</a>*mat[2][3] + v.<a class="code" href="classOgre_1_1Vector4.html#Ogre_1_1Vector4o3">w</a>*mat[3][3]
00469             );
00470     }
00471 
00472 }
00473 <span class="preprocessor">#endif</span>
</pre></div><p>
Copyright &copy; 2000-2005 by The OGRE Team<br />
Last modified Wed Feb 23 00:19:08 2005
</p>
</body>
</html>