source: OGRE/trunk/ogrenew/Docs/api/html/OgreVector2_8h-source.html @ 657

Revision 657, 28.8 KB checked in by mattausch, 18 years ago (diff)

added ogre dependencies and patched ogre sources

Line 
1<html>
2<head>
3<title>OgreVector2.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>OgreVector2.h</h1><a href="OgreVector2_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 __Vector2_H__</span>
3500026 <span class="preprocessor"></span><span class="preprocessor">#define __Vector2_H__</span>
3600027 <span class="preprocessor"></span>
3700028
3800029 <span class="preprocessor">#include "<a class="code" href="OgrePrerequisites_8h.html">OgrePrerequisites.h</a>"</span>
3900030 <span class="preprocessor">#include "<a class="code" href="OgreMath_8h.html">OgreMath.h</a>"</span>
4000031
4100032 <span class="keyword">namespace </span>Ogre
4200033 {
4300034
44<a name="l00042"></a><a class="code" href="classOgre_1_1Vector2.html">00042</a>     <span class="keyword">class </span><a class="code" href="OgrePlatform_8h.html#a16">_OgreExport</a> Vector2
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_1Vector2.html#Ogre_1_1Vector2o1">00047</a>                 <a class="code" href="namespaceOgre.html#a420">Real</a> x, y;       
5000048             };
51<a name="l00049"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o2">00049</a>             <a class="code" href="namespaceOgre.html#a420">Real</a> val[2];
5200050         };
5300051
5400052     <span class="keyword">public</span>:
55<a name="l00053"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a0">00053</a>         <span class="keyword">inline</span> Vector2()
5600054         {
5700055         }
5800056
59<a name="l00057"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a1">00057</a>         <span class="keyword">inline</span> Vector2( <a class="code" href="namespaceOgre.html#a420">Real</a> fX, <a class="code" href="namespaceOgre.html#a420">Real</a> fY )
6000058             : x( fX ), y( fY )
6100059         {
6200060         }
6300061
64<a name="l00062"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a2">00062</a>         <span class="keyword">inline</span> Vector2( <a class="code" href="namespaceOgre.html#a420">Real</a> afCoordinate[2] )
6500063             : x( afCoordinate[0] ),
6600064               y( afCoordinate[1] )
6700065         {
6800066         }
6900067
70<a name="l00068"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a3">00068</a>         <span class="keyword">inline</span> Vector2( <span class="keywordtype">int</span> afCoordinate[2] )
7100069         {
7200070             x = (<a class="code" href="namespaceOgre.html#a420">Real</a>)afCoordinate[0];
7300071             y = (<a class="code" href="namespaceOgre.html#a420">Real</a>)afCoordinate[1];
7400072         }
7500073
76<a name="l00074"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a4">00074</a>         <span class="keyword">inline</span> Vector2( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a420">Real</a>* <span class="keyword">const</span> r )
7700075             : x( r[0] ), y( r[1] )
7800076         {
7900077         }
8000078
81<a name="l00079"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a5">00079</a>         <span class="keyword">inline</span> Vector2( <span class="keyword">const</span> Vector2&amp; rkVector )
8200080             : x( rkVector.x ), y( rkVector.y )
8300081         {
8400082         }
8500083
86<a name="l00084"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a6">00084</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> operator [] ( size_t i )<span class="keyword"> const</span>
8700085 <span class="keyword">        </span>{
8800086             assert( i &lt; 2 );
8900087
9000088             <span class="keywordflow">return</span> *(&amp;x+i);
9100089         }
9200090
93<a name="l00091"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a7">00091</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a>&amp; operator [] ( size_t i )
9400092         {
9500093             assert( i &lt; 2 );
9600094
9700095             <span class="keywordflow">return</span> *(&amp;x+i);
9800096         }
9900097
100<a name="l00102"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a8">00102</a>         <span class="keyword">inline</span> Vector2&amp; operator = ( <span class="keyword">const</span> Vector2&amp; rkVector )
10100103         {
10200104             x = rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
10300105             y = rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;       
10400106
10500107             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
10600108         }
10700109
108<a name="l00110"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a9">00110</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a618">operator == </a>( <span class="keyword">const</span> Vector2&amp; rkVector )<span class="keyword"> const</span>
10900111 <span class="keyword">        </span>{
11000112             <span class="keywordflow">return</span> ( x == rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &amp;&amp; y == rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> );
11100113         }
11200114
113<a name="l00115"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a10">00115</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceOgre.html#a619">operator != </a>( <span class="keyword">const</span> Vector2&amp; rkVector )<span class="keyword"> const</span>
11400116 <span class="keyword">        </span>{
11500117             <span class="keywordflow">return</span> ( x != rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> || y != rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>  );
11600118         }
11700119
11800120         <span class="comment">// arithmetic operations</span>
119<a name="l00121"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a11">00121</a>         <span class="keyword">inline</span> Vector2 operator + ( <span class="keyword">const</span> Vector2&amp; rkVector )<span class="keyword"> const</span>
12000122 <span class="keyword">        </span>{
12100123             Vector2 kSum;
12200124
12300125             kSum.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = x + rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
12400126             kSum.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = y + rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
12500127
12600128             <span class="keywordflow">return</span> kSum;
12700129         }
12800130
129<a name="l00131"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a12">00131</a>         <span class="keyword">inline</span> Vector2 operator - ( <span class="keyword">const</span> Vector2&amp; rkVector )<span class="keyword"> const</span>
13000132 <span class="keyword">        </span>{
13100133             Vector2 kDiff;
13200134
13300135             kDiff.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = x - rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
13400136             kDiff.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = y - rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
13500137
13600138             <span class="keywordflow">return</span> kDiff;
13700139         }
13800140
139<a name="l00141"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a13">00141</a>         <span class="keyword">inline</span> Vector2 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )<span class="keyword"> const</span>
14000142 <span class="keyword">        </span>{
14100143             Vector2 kProd;
14200144
14300145             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = fScalar*x;
14400146             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = fScalar*y;
14500147
14600148             <span class="keywordflow">return</span> kProd;
14700149         }
14800150
149<a name="l00151"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a14">00151</a>         <span class="keyword">inline</span> Vector2 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <span class="keyword">const</span> Vector2&amp; rhs)<span class="keyword"> const</span>
15000152 <span class="keyword">        </span>{
15100153             Vector2 kProd;
15200154
15300155             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> * x;
15400156             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> * y;
15500157
15600158             <span class="keywordflow">return</span> kProd;
15700159         }
15800160
159<a name="l00161"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a15">00161</a>         <span class="keyword">inline</span> Vector2 <a class="code" href="namespaceOgre.html#a613">operator / </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )<span class="keyword"> const</span>
16000162 <span class="keyword">        </span>{
16100163             assert( fScalar != 0.0 );
16200164
16300165             Vector2 kDiv;
16400166
16500167             <a class="code" href="namespaceOgre.html#a420">Real</a> fInv = 1.0 / fScalar;
16600168             kDiv.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = x * fInv;
16700169             kDiv.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = y * fInv;
16800170
16900171             <span class="keywordflow">return</span> kDiv;
17000172         }
17100173
172<a name="l00174"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a16">00174</a>         <span class="keyword">inline</span> Vector2 operator - ()<span class="keyword"> const</span>
17300175 <span class="keyword">        </span>{
17400176             Vector2 kNeg;
17500177
17600178             kNeg.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = -x;
17700179             kNeg.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = -y;
17800180
17900181             <span class="keywordflow">return</span> kNeg;
18000182         }
18100183
182<a name="l00184"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2n0">00184</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector2 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar, <span class="keyword">const</span> Vector2&amp; rkVector )
18300185         {
18400186             Vector2 kProd;
18500187
18600188             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> = fScalar * rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
18700189             kProd.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> = fScalar * rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
18800190
18900191             <span class="keywordflow">return</span> kProd;
19000192         }
19100193
19200194         <span class="comment">// arithmetic updates</span>
193<a name="l00195"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a17">00195</a>         <span class="keyword">inline</span> Vector2&amp; operator += ( <span class="keyword">const</span> Vector2&amp; rkVector )
19400196         {
19500197             x += rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
19600198             y += rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
19700199
19800200             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
19900201         }
20000202
201<a name="l00203"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a18">00203</a>         <span class="keyword">inline</span> Vector2&amp; operator -= ( <span class="keyword">const</span> Vector2&amp; rkVector )
20200204         {
20300205             x -= rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
20400206             y -= rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
20500207
20600208             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
20700209         }
20800210
209<a name="l00211"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a19">00211</a>         <span class="keyword">inline</span> Vector2&amp; operator *= ( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )
21000212         {
21100213             x *= fScalar;
21200214             y *= fScalar;
21300215
21400216             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
21500217         }
21600218
217<a name="l00219"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a20">00219</a>         <span class="keyword">inline</span> Vector2&amp; operator /= ( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )
21800220         {
21900221             assert( fScalar != 0.0 );
22000222
22100223             <a class="code" href="namespaceOgre.html#a420">Real</a> fInv = 1.0 / fScalar;
22200224
22300225             x *= fInv;
22400226             y *= fInv;
22500227
22600228             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
22700229         }
22800230
229<a name="l00238"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a21">00238</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> length ()<span class="keyword"> const</span>
23000239 <span class="keyword">        </span>{
23100240             <span class="keywordflow">return</span> Math::Sqrt( x * x + y * y );
23200241         }
23300242
234<a name="l00253"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a22">00253</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> squaredLength ()<span class="keyword"> const</span>
23500254 <span class="keyword">        </span>{
23600255             <span class="keywordflow">return</span> x * x + y * y;
23700256         }
23800257
239<a name="l00272"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a23">00272</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> dotProduct(<span class="keyword">const</span> Vector2&amp; vec)<span class="keyword"> const</span>
24000273 <span class="keyword">        </span>{
24100274             <span class="keywordflow">return</span> x * vec.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> + y * vec.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
24200275         }
24300276
244<a name="l00286"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a24">00286</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> normalise()
24500287         {
24600288             <a class="code" href="namespaceOgre.html#a420">Real</a> fLength = Math::Sqrt( x * x + y * y);
24700289
24800290             <span class="comment">// Will also work for zero-sized vectors, but will change nothing</span>
24900291             <span class="keywordflow">if</span> ( fLength &gt; 1e-08 )
25000292             {
25100293                 <a class="code" href="namespaceOgre.html#a420">Real</a> fInvLength = 1.0 / fLength;
25200294                 x *= fInvLength;
25300295                 y *= fInvLength;
25400296             }
25500297
25600298             <span class="keywordflow">return</span> fLength;
25700299         }
25800300
25900301     
26000302   
261<a name="l00306"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a25">00306</a>         <span class="keyword">inline</span> Vector2 midPoint( <span class="keyword">const</span> Vector2&amp; vec )<span class="keyword"> const</span>
26200307 <span class="keyword">        </span>{
26300308             <span class="keywordflow">return</span> Vector2(
26400309                 ( x + vec.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> ) * 0.5,
26500310                 ( y + vec.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> ) * 0.5 );
26600311         }
26700312
268<a name="l00316"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a26">00316</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &lt; ( <span class="keyword">const</span> Vector2&amp; rhs )<span class="keyword"> const</span>
26900317 <span class="keyword">        </span>{
27000318             <span class="keywordflow">if</span>( x &lt; rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &amp;&amp; y &lt; rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> )
27100319                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
27200320             <span class="keywordflow">return</span> <span class="keyword">false</span>;
27300321         }
27400322
275<a name="l00326"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a27">00326</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> operator &gt; ( <span class="keyword">const</span> Vector2&amp; rhs )<span class="keyword"> const</span>
27600327 <span class="keyword">        </span>{
27700328             <span class="keywordflow">if</span>( x &gt; rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &amp;&amp; y &gt; rhs.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> )
27800329                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
27900330             <span class="keywordflow">return</span> <span class="keyword">false</span>;
28000331         }
28100332
282<a name="l00340"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a28">00340</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeFloor( <span class="keyword">const</span> Vector2&amp; cmp )
28300341         {
28400342             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &lt; x ) x = cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
28500343             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> &lt; y ) y = cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
28600344         }
28700345
288<a name="l00353"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a29">00353</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeCeil( <span class="keyword">const</span> Vector2&amp; cmp )
28900354         {
29000355             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &gt; x ) x = cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>;
29100356             <span class="keywordflow">if</span>( cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a> &gt; y ) y = cmp.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>;
29200357         }
29300358
294<a name="l00366"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a30">00366</a>         <span class="keyword">inline</span> Vector2 perpendicular(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
29500367 <span class="keyword">        </span>{         
29600368             <span class="keywordflow">return</span> Vector2 (-y, x);
29700369         }
298<a name="l00397"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a31">00397</a>         <span class="keyword">inline</span> Vector2 crossProduct( <span class="keyword">const</span> Vector2&amp; rkVector )<span class="keyword"> const</span>
29900398 <span class="keyword">        </span>{
30000399             <span class="keywordflow">return</span> Vector2(-rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o1">y</a>, rkVector.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a>);
30100400         }
302<a name="l00420"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a32">00420</a>         <span class="keyword">inline</span> Vector2 randomDeviant(
30300421             <a class="code" href="namespaceOgre.html#a420">Real</a> angle)<span class="keyword"> const</span>
30400422 <span class="keyword">        </span>{
30500423           
30600424             angle *=  Math::UnitRandom() * Math::TWO_PI;
30700425             <a class="code" href="namespaceOgre.html#a420">Real</a> cosa = cos(angle);
30800426             <a class="code" href="namespaceOgre.html#a420">Real</a> sina = sin(angle);
30900427             <span class="keywordflow">return</span>  Vector2(cosa * x - sina * y,
31000428                             sina * x + cosa * y);
31100429         }
31200430         
313<a name="l00432"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a33">00432</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isZeroLength(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
31400433 <span class="keyword">        </span>{
31500434             <a class="code" href="namespaceOgre.html#a420">Real</a> sqlen = (x * x) + (y * y);
31600435             <span class="keywordflow">return</span> (sqlen &lt; (1e-06 * 1e-06));
31700436
31800437         }
31900438
320<a name="l00441"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a34">00441</a>         <span class="keyword">inline</span> Vector2 normalisedCopy(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
32100442 <span class="keyword">        </span>{
32200443             Vector2 ret = *<span class="keyword">this</span>;
32300444             ret.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a24">normalise</a>();
32400445             <span class="keywordflow">return</span> ret;
32500446         }
32600447
327<a name="l00451"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2a35">00451</a>         <span class="keyword">inline</span> Vector2 reflect(<span class="keyword">const</span> Vector2&amp; normal)<span class="keyword"> const</span>
32800452 <span class="keyword">        </span>{
32900453             <span class="keywordflow">return</span> Vector2( *<span class="keyword">this</span> - ( 2 * this-&gt;dotProduct(normal) * normal ) );
33000454         }
33100455
33200456         <span class="comment">// special points</span>
333<a name="l00457"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s0">00457</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 ZERO;
334<a name="l00458"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s1">00458</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 UNIT_X;
335<a name="l00459"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s2">00459</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 UNIT_Y;
336<a name="l00460"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s3">00460</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 NEGATIVE_UNIT_X;
337<a name="l00461"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s4">00461</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 NEGATIVE_UNIT_Y;
338<a name="l00462"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2s5">00462</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector2 UNIT_SCALE;
33900463
34000466         <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;
341<a name="l00467"></a><a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2n1">00467</a>             ( std::ostream&amp; o, <span class="keyword">const</span> Vector2&amp; v )
34200468         {
34300469             o &lt;&lt; <span class="stringliteral">"Vector2("</span> &lt;&lt; v.<a class="code" href="classOgre_1_1Vector2.html#Ogre_1_1Vector2o0">x</a> &lt;&lt; <span class="stringliteral">", "</span> &lt;&lt; v.y &lt;&lt;  <span class="stringliteral">")"</span>;
34400470             <span class="keywordflow">return</span> o;
34500471         }
34600472     };
34700473
34800474 }
34900475 <span class="preprocessor">#endif</span>
350</pre></div><hr>
351<p>
352Copyright &copy; 2000-2005 by The OGRE Team<br />
353<!--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/>
354This 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/>
355                <!--/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#">
356                <Work rdf:about="">
357                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
358        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
359                </Work>
360                <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> -->
361
362Last modified Sun Feb 12 12:59:54 2006
363</p>
364</body>
365</html>
Note: See TracBrowser for help on using the repository browser.