<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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related 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 < 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 < 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 &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 &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> &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>& 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>& 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 &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 &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& 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& 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>& 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>& 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>& 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>& 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>& 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>& 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>& 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& <span class="keyword">operator</span> << <a name="l00436"></a><a class="code" href="classOgre_1_1Matrix4.html#Ogre_1_1Matrix4n0">00436</a> ( std::ostream& o, <span class="keyword">const</span> Matrix4& m ) 00437 { 00438 o << <span class="stringliteral">"Matrix4("</span>; 00439 <span class="keywordflow">for</span> (size_t i = 0; i < 4; ++i) 00440 { 00441 o << <span class="stringliteral">" row"</span> << (<span class="keywordtype">unsigned</span>)i << <span class="stringliteral">"{"</span>; 00442 <span class="keywordflow">for</span>(size_t j = 0; j < 4; ++j) 00443 { 00444 o << m[i][j] << <span class="stringliteral">" "</span>; 00445 } 00446 o << <span class="stringliteral">"}"</span>; 00447 } 00448 o << <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>& v, <span class="keyword">const</span> Matrix4& 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 © 2000-2005 by The OGRE Team<br /> Last modified Wed Feb 23 00:19:08 2005 </p> </body> </html>