source: OGRE/trunk/ogrenew/Docs/api/html/OgreVector3_8h-source.html @ 692

Revision 692, 47.6 KB checked in by mattausch, 19 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1<html>
2<head>
3<title>OgreVector3.h Source File - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4<link type="text/css" rel="stylesheet" href="style.css">
5</head>
6
7<body>
8<!-- Generated by Doxygen 1.3.6 -->
9<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>
10<h1>OgreVector3.h</h1><a href="OgreVector3_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
1100002 <span class="comment">-----------------------------------------------------------------------------</span>
1200003 <span class="comment">This source file is part of OGRE</span>
1300004 <span class="comment">    (Object-oriented Graphics Rendering Engine)</span>
1400005 <span class="comment">For the latest info, see http://www.ogre3d.org/</span>
1500006 <span class="comment"></span>
1600007 <span class="comment">Copyright (c) 2000-2005 The OGRE Team</span>
1700008 <span class="comment">Also see acknowledgements in Readme.html</span>
1800009 <span class="comment"></span>
1900010 <span class="comment">This program is free software; you can redistribute it and/or modify it under</span>
2000011 <span class="comment">the terms of the GNU Lesser General Public License as published by the Free Software</span>
2100012 <span class="comment">Foundation; either version 2 of the License, or (at your option) any later</span>
2200013 <span class="comment">version.</span>
2300014 <span class="comment"></span>
2400015 <span class="comment">This program is distributed in the hope that it will be useful, but WITHOUT</span>
2500016 <span class="comment">ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
2600017 <span class="comment">FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.</span>
2700018 <span class="comment"></span>
2800019 <span class="comment">You should have received a copy of the GNU Lesser General Public License along with</span>
2900020 <span class="comment">this program; if not, write to the Free Software Foundation, Inc., 59 Temple</span>
3000021 <span class="comment">Place - Suite 330, Boston, MA 02111-1307, USA, or go to</span>
3100022 <span class="comment">http://www.gnu.org/copyleft/lesser.txt.</span>
3200023 <span class="comment">-----------------------------------------------------------------------------</span>
3300024 <span class="comment">*/</span>
3400025 <span class="preprocessor">#ifndef __Vector3_H__</span>
3500026 <span class="preprocessor"></span><span class="preprocessor">#define __Vector3_H__</span>
3600027 <span class="preprocessor"></span>
3700028 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
3800029 <span class="preprocessor">#include "<a class="code" href="OgreMath_8h.html">OgreMath.h</a>"</span>
3900030 <span class="preprocessor">#include "<a class="code" href="OgreQuaternion_8h.html">OgreQuaternion.h</a>"</span>
4000031
4100032 <span class="keyword">namespace </span>Ogre
4200033 {
4300034
44<a name="l00042"></a><a class="code" href="classOgre_1_1Vector3.html">00042</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a16">_OgreExport</a> Vector3
4500043     {
4600044     <span class="keyword">public</span>:
4700045         <span class="keyword">union </span>{
4800046             <span class="keyword">struct </span>{
49<a name="l00047"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">00047</a>                 <a class="code" href="namespaceOgre.html#a465">Real</a> x, y, z;
5000048             };
51<a name="l00049"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o3">00049</a>             <a class="code" href="namespaceOgre.html#a465">Real</a> val[3];
5200050         };
5300051
5400052     <span class="keyword">public</span>:
55<a name="l00053"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a0">00053</a>         <span class="keyword">inline</span> Vector3()
5600054         {
5700055         }
5800056
59<a name="l00057"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a1">00057</a>         <span class="keyword">inline</span> Vector3( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fX, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fY, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fZ )
6000058             : x( fX ), y( fY ), z( fZ )
6100059         {
6200060         }
6300061
64<a name="l00062"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a2">00062</a>         <span class="keyword">inline</span> <span class="keyword">explicit</span> Vector3( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> afCoordinate[3] )
6500063             : x( afCoordinate[0] ),
6600064               y( afCoordinate[1] ),
6700065               z( afCoordinate[2] )
6800066         {
6900067         }
7000068
71<a name="l00069"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a3">00069</a>         <span class="keyword">inline</span> <span class="keyword">explicit</span> Vector3( <span class="keyword">const</span> <span class="keywordtype">int</span> afCoordinate[3] )
7200070         {
7300071             x = (<a class="code" href="namespaceOgre.html#a465">Real</a>)afCoordinate[0];
7400072             y = (<a class="code" href="namespaceOgre.html#a465">Real</a>)afCoordinate[1];
7500073             z = (<a class="code" href="namespaceOgre.html#a465">Real</a>)afCoordinate[2];
7600074         }
7700075
78<a name="l00076"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a4">00076</a>         <span class="keyword">inline</span> <span class="keyword">explicit</span> Vector3( <a class="code" href="namespaceOgre.html#a465">Real</a>* <span class="keyword">const</span> r )
7900077             : x( r[0] ), y( r[1] ), z( r[2] )
8000078         {
8100079         }
8200080
83<a name="l00081"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a5">00081</a>         <span class="keyword">inline</span> <span class="keyword">explicit</span> Vector3( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> scaler )
8400082             : x( scaler )
8500083             , y( scaler )
8600084             , z( scaler )
8700085         {
8800086         }
8900087
9000088
91<a name="l00089"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a6">00089</a>         <span class="keyword">inline</span> Vector3( <span class="keyword">const</span> Vector3&amp; rkVector )
9200090             : x( rkVector.x ), y( rkVector.y ), z( rkVector.z )
9300091         {
9400092         }
9500093
96<a name="l00094"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a7">00094</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a> operator [] ( <span class="keyword">const</span> size_t i )<span class="keyword"> const</span>
9700095 <span class="keyword">        </span>{
9800096             assert( i &lt; 3 );
9900097
10000098             <span class="keywordflow">return</span> *(&amp;x+i);
10100099         }
10200100
103<a name="l00101"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a8">00101</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a>&amp; operator [] ( <span class="keyword">const</span> size_t i )
10400102         {
10500103             assert( i &lt; 3 );
10600104
10700105             <span class="keywordflow">return</span> *(&amp;x+i);
10800106         }
10900107
110<a name="l00112"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a9">00112</a>         <span class="keyword">inline</span> Vector3&amp; operator = ( <span class="keyword">const</span> Vector3&amp; rkVector )
11100113         {
11200114             x = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
11300115             y = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
11400116             z = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
11500117
11600118             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
11700119         }
11800120
119<a name="l00121"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a10">00121</a>         <span class="keyword">inline</span> Vector3&amp; operator = ( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScaler )
12000122         {
12100123             x = fScaler;
12200124             y = fScaler;
12300125             z = fScaler;
12400126
12500127             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
12600128         }
12700129
128<a name="l00130"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a11">00130</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a623">operator == </a>( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
12900131 <span class="keyword">        </span>{
13000132             <span class="keywordflow">return</span> ( x == rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> &amp;&amp; y == rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> &amp;&amp; z == rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> );
13100133         }
13200134
133<a name="l00135"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a12">00135</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a624">operator != </a>( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
13400136 <span class="keyword">        </span>{
13500137             <span class="keywordflow">return</span> ( x != rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> || y != rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> || z != rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> );
13600138         }
13700139
13800140         <span class="comment">// arithmetic operations</span>
139<a name="l00141"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a13">00141</a>         <span class="keyword">inline</span> Vector3 operator + ( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
14000142 <span class="keyword">        </span>{
14100143             Vector3 kSum;
14200144
14300145             kSum.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = x + rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
14400146             kSum.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = y + rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
14500147             kSum.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = z + rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
14600148
14700149             <span class="keywordflow">return</span> kSum;
14800150         }
14900151
150<a name="l00152"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a14">00152</a>         <span class="keyword">inline</span> Vector3 operator - ( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
15100153 <span class="keyword">        </span>{
15200154             Vector3 kDiff;
15300155
15400156             kDiff.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = x - rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
15500157             kDiff.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = y - rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
15600158             kDiff.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = z - rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
15700159
15800160             <span class="keywordflow">return</span> kDiff;
15900161         }
16000162
161<a name="l00163"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a15">00163</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a617">operator * </a>( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )<span class="keyword"> const</span>
16200164 <span class="keyword">        </span>{
16300165             Vector3 kProd;
16400166
16500167             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = fScalar*x;
16600168             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = fScalar*y;
16700169             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = fScalar*z;
16800170
16900171             <span class="keywordflow">return</span> kProd;
17000172         }
17100173
172<a name="l00174"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a16">00174</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a617">operator * </a>( <span class="keyword">const</span> Vector3&amp; rhs)<span class="keyword"> const</span>
17300175 <span class="keyword">        </span>{
17400176             Vector3 kProd;
17500177
17600178             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> * x;
17700179             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> * y;
17800180             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> * z;
17900181
18000182             <span class="keywordflow">return</span> kProd;
18100183         }
18200184
183<a name="l00185"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a17">00185</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a618">operator / </a>( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )<span class="keyword"> const</span>
18400186 <span class="keyword">        </span>{
18500187             assert( fScalar != 0.0 );
18600188
18700189             Vector3 kDiv;
18800190
18900191             <a class="code" href="namespaceOgre.html#a465">Real</a> fInv = 1.0 / fScalar;
19000192             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = x * fInv;
19100193             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = y * fInv;
19200194             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = z * fInv;
19300195
19400196             <span class="keywordflow">return</span> kDiv;
19500197         }
19600198
197<a name="l00199"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a18">00199</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a618">operator / </a>( <span class="keyword">const</span> Vector3&amp; rhs)<span class="keyword"> const</span>
19800200 <span class="keyword">        </span>{
19900201             Vector3 kDiv;
20000202
20100203             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = x / rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
20200204             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = y / rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
20300205             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = z / rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
20400206
20500207             <span class="keywordflow">return</span> kDiv;
20600208         }
20700209
20800210
209<a name="l00211"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a19">00211</a>         <span class="keyword">inline</span> Vector3 operator - ()<span class="keyword"> const</span>
21000212 <span class="keyword">        </span>{
21100213             Vector3 kNeg;
21200214
21300215             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = -x;
21400216             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = -y;
21500217             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = -z;
21600218
21700219             <span class="keywordflow">return</span> kNeg;
21800220         }
21900221
22000222         <span class="comment">// overloaded operators to help Vector3</span>
221<a name="l00223"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n0">00223</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 <a class="code" href="namespaceOgre.html#a617">operator * </a>( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar, <span class="keyword">const</span> Vector3&amp; rkVector )
22200224         {
22300225             Vector3 kProd;
22400226
22500227             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = fScalar * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
22600228             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = fScalar * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
22700229             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = fScalar * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
22800230
22900231             <span class="keywordflow">return</span> kProd;
23000232         }
23100233
232<a name="l00234"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n1">00234</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 operator + (<span class="keyword">const</span> Vector3&amp; lhs, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> rhs)
23300235         {
23400236             Vector3 ret(rhs);
23500237             <span class="keywordflow">return</span> ret += lhs;
23600238         }
23700239
238<a name="l00240"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n2">00240</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 operator + (<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> lhs, <span class="keyword">const</span> Vector3&amp; rhs)
23900241         {
24000242             Vector3 ret(lhs);
24100243             <span class="keywordflow">return</span> ret += rhs;
24200244         }
24300245
244<a name="l00246"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n3">00246</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 operator - (<span class="keyword">const</span> Vector3&amp; lhs, <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> rhs)
24500247         {
24600248             <span class="keywordflow">return</span> lhs - Vector3(rhs);
24700249         }
24800250
249<a name="l00251"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n4">00251</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 operator - (<span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> lhs, <span class="keyword">const</span> Vector3&amp; rhs)
25000252         {
25100253             Vector3 ret(lhs);
25200254             <span class="keywordflow">return</span> ret -= rhs;
25300255         }
25400256
25500257         <span class="comment">// arithmetic updates</span>
256<a name="l00258"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a20">00258</a>         <span class="keyword">inline</span> Vector3&amp; operator += ( <span class="keyword">const</span> Vector3&amp; rkVector )
25700259         {
25800260             x += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
25900261             y += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
26000262             z += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
26100263
26200264             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
26300265         }
26400266
265<a name="l00267"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a21">00267</a>         <span class="keyword">inline</span> Vector3&amp; operator += ( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )
26600268         {
26700269             x += fScalar;
26800270             y += fScalar;
26900271             z += fScalar;
27000272             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
27100273         }
27200274
273<a name="l00275"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a22">00275</a>         <span class="keyword">inline</span> Vector3&amp; operator -= ( <span class="keyword">const</span> Vector3&amp; rkVector )
27400276         {
27500277             x -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
27600278             y -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
27700279             z -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
27800280
27900281             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
28000282         }
28100283
282<a name="l00284"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a23">00284</a>         <span class="keyword">inline</span> Vector3&amp; operator -= ( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )
28300285         {
28400286             x -= fScalar;
28500287             y -= fScalar;
28600288             z -= fScalar;
28700289             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
28800290         }
28900291
290<a name="l00292"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a24">00292</a>         <span class="keyword">inline</span> Vector3&amp; operator *= ( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )
29100293         {
29200294             x *= fScalar;
29300295             y *= fScalar;
29400296             z *= fScalar;
29500297             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
29600298         }
29700299
298<a name="l00300"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a25">00300</a>         <span class="keyword">inline</span> Vector3&amp; operator *= ( <span class="keyword">const</span> Vector3&amp; rkVector )
29900301         {
30000302             x *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
30100303             y *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
30200304             z *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
30300305
30400306             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
30500307         }
30600308
307<a name="l00309"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a26">00309</a>         <span class="keyword">inline</span> Vector3&amp; operator /= ( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fScalar )
30800310         {
30900311             assert( fScalar != 0.0 );
31000312
31100313             <a class="code" href="namespaceOgre.html#a465">Real</a> fInv = 1.0 / fScalar;
31200314
31300315             x *= fInv;
31400316             y *= fInv;
31500317             z *= fInv;
31600318
31700319             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
31800320         }
31900321
320<a name="l00322"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">00322</a>         <span class="keyword">inline</span> Vector3&amp; operator /= ( <span class="keyword">const</span> Vector3&amp; rkVector )
32100323         {
32200324             x /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
32300325             y /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
32400326             z /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
32500327
32600328             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
32700329         }
32800330
32900331
330<a name="l00339"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a28">00339</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a> length ()<span class="keyword"> const</span>
33100340 <span class="keyword">        </span>{
33200341             <span class="keywordflow">return</span> Math::Sqrt( x * x + y * y + z * z );
33300342         }
33400343
335<a name="l00354"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a29">00354</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a> squaredLength ()<span class="keyword"> const</span>
33600355 <span class="keyword">        </span>{
33700356             <span class="keywordflow">return</span> x * x + y * y + z * z;
33800357         }
33900358
340<a name="l00373"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a30">00373</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a> dotProduct(<span class="keyword">const</span> Vector3&amp; vec)<span class="keyword"> const</span>
34100374 <span class="keyword">        </span>{
34200375             <span class="keywordflow">return</span> x * vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> + y * vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> + z * vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
34300376         }
34400377
345<a name="l00387"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">00387</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a465">Real</a> normalise()
34600388         {
34700389             <a class="code" href="namespaceOgre.html#a465">Real</a> fLength = Math::Sqrt( x * x + y * y + z * z );
34800390
34900391             <span class="comment">// Will also work for zero-sized vectors, but will change nothing</span>
35000392             <span class="keywordflow">if</span> ( fLength &gt; 1e-08 )
35100393             {
35200394                 <a class="code" href="namespaceOgre.html#a465">Real</a> fInvLength = 1.0 / fLength;
35300395                 x *= fInvLength;
35400396                 y *= fInvLength;
35500397                 z *= fInvLength;
35600398             }
35700399
35800400             <span class="keywordflow">return</span> fLength;
35900401         }
36000402
361<a name="l00431"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a32">00431</a>         <span class="keyword">inline</span> Vector3 crossProduct( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
36200432 <span class="keyword">        </span>{
36300433             Vector3 kCross;
36400434
36500435             kCross.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = y * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> - z * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
36600436             kCross.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = z * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> - x * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
36700437             kCross.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = x * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> - y * rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
36800438
36900439             <span class="keywordflow">return</span> kCross;
37000440         }
37100441
372<a name="l00445"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a33">00445</a>         <span class="keyword">inline</span> Vector3 midPoint( <span class="keyword">const</span> Vector3&amp; vec )<span class="keyword"> const</span>
37300446 <span class="keyword">        </span>{
37400447             <span class="keywordflow">return</span> Vector3(
37500448                 ( x + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> ) * 0.5,
37600449                 ( y + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> ) * 0.5,
37700450                 ( z + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> ) * 0.5 );
37800451         }
37900452
380<a name="l00456"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a34">00456</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt; ( <span class="keyword">const</span> Vector3&amp; rhs )<span class="keyword"> const</span>
38100457 <span class="keyword">        </span>{
38200458             <span class="keywordflow">if</span>( x &lt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> &amp;&amp; y &lt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> &amp;&amp; z &lt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> )
38300459                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
38400460             <span class="keywordflow">return</span> <span class="keyword">false</span>;
38500461         }
38600462
387<a name="l00466"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a35">00466</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt; ( <span class="keyword">const</span> Vector3&amp; rhs )<span class="keyword"> const</span>
38800467 <span class="keyword">        </span>{
38900468             <span class="keywordflow">if</span>( x &gt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> &amp;&amp; y &gt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> &amp;&amp; z &gt; rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> )
39000469                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
39100470             <span class="keywordflow">return</span> <span class="keyword">false</span>;
39200471         }
39300472
394<a name="l00480"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a36">00480</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeFloor( <span class="keyword">const</span> Vector3&amp; cmp )
39500481         {
39600482             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> &lt; x ) x = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
39700483             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> &lt; y ) y = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
39800484             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> &lt; z ) z = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
39900485         }
40000486
401<a name="l00494"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a37">00494</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeCeil( <span class="keyword">const</span> Vector3&amp; cmp )
40200495         {
40300496             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> &gt; x ) x = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
40400497             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> &gt; y ) y = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
40500498             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> &gt; z ) z = cmp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
40600499         }
40700500
408<a name="l00508"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a38">00508</a>         <span class="keyword">inline</span> Vector3 perpendicular(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
40900509 <span class="keyword">        </span>{
41000510             <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a465">Real</a> fSquareZero = 1e-06 * 1e-06;
41100511
41200512             Vector3 perp = this-&gt;crossProduct( Vector3::UNIT_X );
41300513
41400514             <span class="comment">// Check length</span>
41500515             <span class="keywordflow">if</span>( perp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a29">squaredLength</a>() &lt; fSquareZero )
41600516             {
41700517                 <span class="comment">/* This vector is the Y axis multiplied by a scalar, so we have</span>
41800518 <span class="comment">                   to use another axis.</span>
41900519 <span class="comment">                */</span>
42000520                 perp = this-&gt;crossProduct( Vector3::UNIT_Y );
42100521             }
42200522
42300523             <span class="keywordflow">return</span> perp;
42400524         }
425<a name="l00544"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a39">00544</a>         <span class="keyword">inline</span> Vector3 randomDeviant(
42600545             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>&amp; angle,
42700546             <span class="keyword">const</span> Vector3&amp; up = Vector3::ZERO )<span class="keyword"> const</span>
42800547 <span class="keyword">        </span>{
42900548             Vector3 newUp;
43000549
43100550             <span class="keywordflow">if</span> (up == Vector3::ZERO)
43200551             {
43300552                 <span class="comment">// Generate an up vector</span>
43400553                 newUp = this-&gt;perpendicular();
43500554             }
43600555             <span class="keywordflow">else</span>
43700556             {
43800557                 newUp = up;
43900558             }
44000559
44100560             <span class="comment">// Rotate up vector by random amount around this</span>
44200561             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> q;
44300562             q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona9">FromAngleAxis</a>( <a class="code" href="classOgre_1_1Radian.html">Radian</a>(Math::UnitRandom() * Math::TWO_PI), *<span class="keyword">this</span> );
44400563             newUp = q * newUp;
44500564
44600565             <span class="comment">// Finally rotate this by given angle around randomised up</span>
44700566             q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona9">FromAngleAxis</a>( angle, newUp );
44800567             <span class="keywordflow">return</span> q * (*this);
44900568         }
45000569 <span class="preprocessor">#ifndef OGRE_FORCE_ANGLE_TYPES</span>
45100570 <span class="preprocessor"></span>        <span class="keyword">inline</span> Vector3 randomDeviant(
45200571             <a class="code" href="namespaceOgre.html#a465">Real</a> angle,
45300572             <span class="keyword">const</span> Vector3&amp; up = Vector3::ZERO )<span class="keyword"> const</span>
45400573 <span class="keyword">        </span>{
45500574             <span class="keywordflow">return</span> randomDeviant ( <a class="code" href="classOgre_1_1Radian.html">Radian</a>(angle), up );
45600575         }
45700576 <span class="preprocessor">#endif//OGRE_FORCE_ANGLE_TYPES</span>
45800577 <span class="preprocessor"></span>
459<a name="l00586"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a40">00586</a>         <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> getRotationTo(<span class="keyword">const</span> Vector3&amp; dest,
46000587             <span class="keyword">const</span> Vector3&amp; fallbackAxis = Vector3::ZERO)<span class="keyword"> const</span>
46100588 <span class="keyword">        </span>{
46200589             <span class="comment">// Based on Stan Melax's article in Game Programming Gems</span>
46300590             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> q;
46400591             <span class="comment">// Copy, since cannot modify local</span>
46500592             Vector3 v0 = *<span class="keyword">this</span>;
46600593             Vector3 v1 = dest;
46700594             v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">normalise</a>();
46800595             v1.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">normalise</a>();
46900596
47000597             Vector3 c = v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a32">crossProduct</a>(v1);
47100598
47200599             <a class="code" href="namespaceOgre.html#a465">Real</a> d = v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a30">dotProduct</a>(v1);
47300600             <span class="comment">// If dot == 1, vectors are the same</span>
47400601             <span class="keywordflow">if</span> (d &gt;= 1.0f)
47500602             {
47600603                 <span class="keywordflow">return</span> Quaternion::IDENTITY;
47700604             }
47800605             <a class="code" href="namespaceOgre.html#a465">Real</a> s = Math::Sqrt( (1+d)*2 );
47900606             <span class="keywordflow">if</span> (s &lt; 1e-6f)
48000607             {
48100608                 <span class="keywordflow">if</span> (fallbackAxis != Vector3::ZERO)
48200609                 {
48300610                     <span class="comment">// rotate 180 degrees about the fallback axis</span>
48400611                     q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona9">FromAngleAxis</a>(<a class="code" href="classOgre_1_1Radian.html">Radian</a>(Math::PI), fallbackAxis);
48500612                 }
48600613                 <span class="keywordflow">else</span>
48700614                 {
48800615                     <span class="comment">// Generate an axis</span>
48900616                     Vector3 axis = Vector3::UNIT_X.crossProduct(*<span class="keyword">this</span>);
49000617                     <span class="keywordflow">if</span> (axis.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a41">isZeroLength</a>()) <span class="comment">// pick another if colinear</span>
49100618                         axis = Vector3::UNIT_Y.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a32">crossProduct</a>(*<span class="keyword">this</span>);
49200619                     axis.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">normalise</a>();
49300620                     q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona9">FromAngleAxis</a>(<a class="code" href="classOgre_1_1Radian.html">Radian</a>(Math::PI), axis);
49400621                 }
49500622             }
49600623             <span class="keywordflow">else</span>
49700624             {
49800625                 <a class="code" href="namespaceOgre.html#a465">Real</a> invs = 1 / s;
49900626
50000627                 q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniono1">x</a> = c.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> * invs;
50100628                 q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniono2">y</a> = c.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> * invs;
50200629                 q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniono3">z</a> = c.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> * invs;
50300630                 q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniono0">w</a> = s * 0.5;
50400631             }
50500632             <span class="keywordflow">return</span> q;
50600633         }
50700634
508<a name="l00636"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a41">00636</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isZeroLength(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
50900637 <span class="keyword">        </span>{
51000638             <a class="code" href="namespaceOgre.html#a465">Real</a> sqlen = (x * x) + (y * y) + (z * z);
51100639             <span class="keywordflow">return</span> (sqlen &lt; (1e-06 * 1e-06));
51200640
51300641         }
51400642
515<a name="l00645"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a42">00645</a>         <span class="keyword">inline</span> Vector3 normalisedCopy(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
51600646 <span class="keyword">        </span>{
51700647             Vector3 ret = *<span class="keyword">this</span>;
51800648             ret.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">normalise</a>();
51900649             <span class="keywordflow">return</span> ret;
52000650         }
52100651
522<a name="l00655"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a43">00655</a>         <span class="keyword">inline</span> Vector3 reflect(<span class="keyword">const</span> Vector3&amp; normal)<span class="keyword"> const</span>
52300656 <span class="keyword">        </span>{
52400657             <span class="keywordflow">return</span> Vector3( *<span class="keyword">this</span> - ( 2 * this-&gt;dotProduct(normal) * normal ) );
52500658         }
52600659
527<a name="l00666"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a44">00666</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> positionEquals(<span class="keyword">const</span> Vector3&amp; rhs, <a class="code" href="namespaceOgre.html#a465">Real</a> tolerance = 1e-03)<span class="keyword"> const</span>
52800667 <span class="keyword">        </span>{
52900668             <span class="keywordflow">return</span> Math::RealEqual(x, rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>, tolerance) &amp;&amp;
53000669                 Math::RealEqual(y, rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>, tolerance) &amp;&amp;
53100670                 Math::RealEqual(z, rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>, tolerance);
53200671
53300672         }
534<a name="l00679"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a45">00679</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> directionEquals(<span class="keyword">const</span> Vector3&amp; rhs,
53500680             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>&amp; tolerance)<span class="keyword"> const</span>
53600681 <span class="keyword">        </span>{
53700682             <a class="code" href="namespaceOgre.html#a465">Real</a> dot = dotProduct(rhs);
53800683             <a class="code" href="classOgre_1_1Radian.html">Radian</a> angle = Math::ACos(dot);
53900684
54000685             <span class="keywordflow">return</span> Math::Abs(angle.<a class="code" href="classOgre_1_1Radian.html#Ogre_1_1Radiana6">valueRadians</a>()) &lt;= tolerance.<a class="code" href="classOgre_1_1Radian.html#Ogre_1_1Radiana6">valueRadians</a>();
54100686
54200687         }
54300688
54400689         <span class="comment">// special points</span>
545<a name="l00690"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s0">00690</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 ZERO;
546<a name="l00691"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s1">00691</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_X;
547<a name="l00692"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s2">00692</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_Y;
548<a name="l00693"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s3">00693</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_Z;
549<a name="l00694"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s4">00694</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_X;
550<a name="l00695"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s5">00695</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_Y;
551<a name="l00696"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s6">00696</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_Z;
552<a name="l00697"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s7">00697</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_SCALE;
55300698
55400701         <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;
555<a name="l00702"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n5">00702</a>             ( std::ostream&amp; o, <span class="keyword">const</span> Vector3&amp; v )
55600703         {
55700704             o &lt;&lt; <span class="stringliteral">"Vector3("</span> &lt;&lt; v.x &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; v.y &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; v.z &lt;&lt; <span class="stringliteral">")"</span>;
55800705             <span class="keywordflow">return</span> o;
55900706         }
56000707     };
56100708
56200709 }
56300710 <span class="preprocessor">#endif</span>
564</pre></div><hr>
565<p>
566Copyright &copy; 2000-2005 by The OGRE Team<br />
567<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/>
568This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/>
569                <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
570                <Work rdf:about="">
571                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
572        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
573                </Work>
574                <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
575
576Last modified Sun Mar 12 14:37:51 2006
577</p>
578</body>
579</html>
Note: See TracBrowser for help on using the repository browser.