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

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

added ogre dependencies and patched ogre sources

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#a420">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#a420">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( <a class="code" href="namespaceOgre.html#a420">Real</a> fX, <a class="code" href="namespaceOgre.html#a420">Real</a> fY, <a class="code" href="namespaceOgre.html#a420">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> Vector3( <a class="code" href="namespaceOgre.html#a420">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> Vector3( <span class="keywordtype">int</span> afCoordinate[3] )
7200070         {
7300071             x = (<a class="code" href="namespaceOgre.html#a420">Real</a>)afCoordinate[0];
7400072             y = (<a class="code" href="namespaceOgre.html#a420">Real</a>)afCoordinate[1];
7500073             z = (<a class="code" href="namespaceOgre.html#a420">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> Vector3( <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a420">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> Vector3( <span class="keyword">const</span> Vector3&amp; rkVector )
8400082             : x( rkVector.x ), y( rkVector.y ), z( rkVector.z )
8500083         {
8600084         }
8700085
88<a name="l00086"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a6">00086</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> operator [] ( size_t i )<span class="keyword"> const</span>
8900087 <span class="keyword">        </span>{
9000088             assert( i &lt; 3 );
9100089
9200090             <span class="keywordflow">return</span> *(&amp;x+i);
9300091         }
9400092
95<a name="l00093"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a7">00093</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a>&amp; operator [] ( size_t i )
9600094         {
9700095             assert( i &lt; 3 );
9800096
9900097             <span class="keywordflow">return</span> *(&amp;x+i);
10000098         }
10100099
102<a name="l00104"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a8">00104</a>         <span class="keyword">inline</span> Vector3&amp; operator = ( <span class="keyword">const</span> Vector3&amp; rkVector )
10300105         {
10400106             x = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
10500107             y = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
10600108             z = rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;           
10700109
10800110             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
10900111         }
11000112
111<a name="l00113"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a9">00113</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> Vector3&amp; rkVector )<span class="keyword"> const</span>
11200114 <span class="keyword">        </span>{
11300115             <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> );
11400116         }
11500117
116<a name="l00118"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a10">00118</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> Vector3&amp; rkVector )<span class="keyword"> const</span>
11700119 <span class="keyword">        </span>{
11800120             <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> );
11900121         }
12000122
12100123         <span class="comment">// arithmetic operations</span>
122<a name="l00124"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a11">00124</a>         <span class="keyword">inline</span> Vector3 operator + ( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
12300125 <span class="keyword">        </span>{
12400126             Vector3 kSum;
12500127
12600128             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>;
12700129             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>;
12800130             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>;
12900131
13000132             <span class="keywordflow">return</span> kSum;
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> Vector3 operator - ( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
13400136 <span class="keyword">        </span>{
13500137             Vector3 kDiff;
13600138
13700139             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>;
13800140             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>;
13900141             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>;
14000142
14100143             <span class="keywordflow">return</span> kDiff;
14200144         }
14300145
144<a name="l00146"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a13">00146</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )<span class="keyword"> const</span>
14500147 <span class="keyword">        </span>{
14600148             Vector3 kProd;
14700149
14800150             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = fScalar*x;
14900151             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = fScalar*y;
15000152             kProd.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = fScalar*z;
15100153
15200154             <span class="keywordflow">return</span> kProd;
15300155         }
15400156
155<a name="l00157"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a14">00157</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <span class="keyword">const</span> Vector3&amp; rhs)<span class="keyword"> const</span>
15600158 <span class="keyword">        </span>{
15700159             Vector3 kProd;
15800160
15900161             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;
16000162             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;
16100163             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;
16200164
16300165             <span class="keywordflow">return</span> kProd;
16400166         }
16500167
166<a name="l00168"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a15">00168</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a613">operator / </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )<span class="keyword"> const</span>
16700169 <span class="keyword">        </span>{
16800170             assert( fScalar != 0.0 );
16900171
17000172             Vector3 kDiv;
17100173
17200174             <a class="code" href="namespaceOgre.html#a420">Real</a> fInv = 1.0 / fScalar;
17300175             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = x * fInv;
17400176             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = y * fInv;
17500177             kDiv.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = z * fInv;
17600178
17700179             <span class="keywordflow">return</span> kDiv;
17800180         }
17900181
180<a name="l00182"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a16">00182</a>         <span class="keyword">inline</span> Vector3 <a class="code" href="namespaceOgre.html#a613">operator / </a>( <span class="keyword">const</span> Vector3&amp; rhs)<span class="keyword"> const</span>
18100183 <span class="keyword">        </span>{
18200184             Vector3 kDiv;
18300185
18400186             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>;
18500187             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>;
18600188             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>;
18700189
18800190             <span class="keywordflow">return</span> kDiv;
18900191         }
19000192
19100193
192<a name="l00194"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a17">00194</a>         <span class="keyword">inline</span> Vector3 operator - ()<span class="keyword"> const</span>
19300195 <span class="keyword">        </span>{
19400196             Vector3 kNeg;
19500197
19600198             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> = -x;
19700199             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> = -y;
19800200             kNeg.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> = -z;
19900201
20000202             <span class="keywordflow">return</span> kNeg;
20100203         }
20200204
203<a name="l00205"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n0">00205</a>         <span class="keyword">inline</span> <span class="keyword">friend</span> Vector3 <a class="code" href="namespaceOgre.html#a612">operator * </a>( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar, <span class="keyword">const</span> Vector3&amp; rkVector )
20400206         {
20500207             Vector3 kProd;
20600208
20700209             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>;
20800210             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>;
20900211             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>;
21000212
21100213             <span class="keywordflow">return</span> kProd;
21200214         }
21300215
21400216         <span class="comment">// arithmetic updates</span>
215<a name="l00217"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a18">00217</a>         <span class="keyword">inline</span> Vector3&amp; operator += ( <span class="keyword">const</span> Vector3&amp; rkVector )
21600218         {
21700219             x += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
21800220             y += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
21900221             z += rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
22000222
22100223             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
22200224         }
22300225
224<a name="l00226"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a19">00226</a>         <span class="keyword">inline</span> Vector3&amp; operator -= ( <span class="keyword">const</span> Vector3&amp; rkVector )
22500227         {
22600228             x -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
22700229             y -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
22800230             z -= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
22900231
23000232             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
23100233         }
23200234
233<a name="l00235"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a20">00235</a>         <span class="keyword">inline</span> Vector3&amp; operator *= ( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )
23400236         {
23500237             x *= fScalar;
23600238             y *= fScalar;
23700239             z *= fScalar;
23800240             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
23900241         }
24000242
241<a name="l00243"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a21">00243</a>         <span class="keyword">inline</span> Vector3&amp; operator *= ( <span class="keyword">const</span> Vector3&amp; rkVector )
24200244         {
24300245             x *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
24400246             y *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
24500247             z *= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
24600248
24700249             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
24800250         }
24900251
250<a name="l00252"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a22">00252</a>         <span class="keyword">inline</span> Vector3&amp; operator /= ( <a class="code" href="namespaceOgre.html#a420">Real</a> fScalar )
25100253         {
25200254             assert( fScalar != 0.0 );
25300255
25400256             <a class="code" href="namespaceOgre.html#a420">Real</a> fInv = 1.0 / fScalar;
25500257
25600258             x *= fInv;
25700259             y *= fInv;
25800260             z *= fInv;
25900261
26000262             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
26100263         }
26200264
263<a name="l00265"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a23">00265</a>         <span class="keyword">inline</span> Vector3&amp; operator /= ( <span class="keyword">const</span> Vector3&amp; rkVector )
26400266         {
26500267             x /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a>;
26600268             y /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>;
26700269             z /= rkVector.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>;
26800270
26900271             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
27000272         }
27100273
27200274
273<a name="l00282"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a24">00282</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> length ()<span class="keyword"> const</span>
27400283 <span class="keyword">        </span>{
27500284             <span class="keywordflow">return</span> Math::Sqrt( x * x + y * y + z * z );
27600285         }
27700286
278<a name="l00297"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a25">00297</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> squaredLength ()<span class="keyword"> const</span>
27900298 <span class="keyword">        </span>{
28000299             <span class="keywordflow">return</span> x * x + y * y + z * z;
28100300         }
28200301
283<a name="l00316"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a26">00316</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> dotProduct(<span class="keyword">const</span> Vector3&amp; vec)<span class="keyword"> const</span>
28400317 <span class="keyword">        </span>{
28500318             <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>;
28600319         }
28700320
288<a name="l00330"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">00330</a>         <span class="keyword">inline</span> <a class="code" href="namespaceOgre.html#a420">Real</a> normalise()
28900331         {
29000332             <a class="code" href="namespaceOgre.html#a420">Real</a> fLength = Math::Sqrt( x * x + y * y + z * z );
29100333
29200334             <span class="comment">// Will also work for zero-sized vectors, but will change nothing</span>
29300335             <span class="keywordflow">if</span> ( fLength &gt; 1e-08 )
29400336             {
29500337                 <a class="code" href="namespaceOgre.html#a420">Real</a> fInvLength = 1.0 / fLength;
29600338                 x *= fInvLength;
29700339                 y *= fInvLength;
29800340                 z *= fInvLength;
29900341             }
30000342
30100343             <span class="keywordflow">return</span> fLength;
30200344         }
30300345
304<a name="l00373"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a28">00373</a>         <span class="keyword">inline</span> Vector3 crossProduct( <span class="keyword">const</span> Vector3&amp; rkVector )<span class="keyword"> const</span>
30500374 <span class="keyword">        </span>{
30600375             Vector3 kCross;
30700376
30800377             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>;
30900378             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>;
31000379             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>;
31100380
31200381             <span class="keywordflow">return</span> kCross;
31300382         }
31400383
315<a name="l00387"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a29">00387</a>         <span class="keyword">inline</span> Vector3 midPoint( <span class="keyword">const</span> Vector3&amp; vec )<span class="keyword"> const</span>
31600388 <span class="keyword">        </span>{
31700389             <span class="keywordflow">return</span> Vector3(
31800390                 ( x + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o0">x</a> ) * 0.5,
31900391                 ( y + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a> ) * 0.5,
32000392                 ( z + vec.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a> ) * 0.5 );
32100393         }
32200394
323<a name="l00398"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a30">00398</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>
32400399 <span class="keyword">        </span>{
32500400             <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> )
32600401                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
32700402             <span class="keywordflow">return</span> <span class="keyword">false</span>;
32800403         }
32900404
330<a name="l00408"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a31">00408</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>
33100409 <span class="keyword">        </span>{
33200410             <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> )
33300411                 <span class="keywordflow">return</span> <span class="keyword">true</span>;
33400412             <span class="keywordflow">return</span> <span class="keyword">false</span>;
33500413         }
33600414
337<a name="l00422"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a32">00422</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeFloor( <span class="keyword">const</span> Vector3&amp; cmp )
33800423         {
33900424             <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>;
34000425             <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>;
34100426             <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>;
34200427         }
34300428
344<a name="l00436"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a33">00436</a>         <span class="keyword">inline</span> <span class="keywordtype">void</span> makeCeil( <span class="keyword">const</span> Vector3&amp; cmp )
34500437         {
34600438             <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>;
34700439             <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>;
34800440             <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>;
34900441         }
35000442
351<a name="l00450"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a34">00450</a>         <span class="keyword">inline</span> Vector3 perpendicular(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
35200451 <span class="keyword">        </span>{
35300452             <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespaceOgre.html#a420">Real</a> fSquareZero = 1e-06 * 1e-06;
35400453
35500454             Vector3 perp = this-&gt;crossProduct( Vector3::UNIT_X );
35600455
35700456             <span class="comment">// Check length</span>
35800457             <span class="keywordflow">if</span>( perp.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a25">squaredLength</a>() &lt; fSquareZero )
35900458             {
36000459                 <span class="comment">/* This vector is the Y axis multiplied by a scalar, so we have </span>
36100460 <span class="comment">                   to use another axis.</span>
36200461 <span class="comment">                */</span>
36300462                 perp = this-&gt;crossProduct( Vector3::UNIT_Y );
36400463             }
36500464
36600465             <span class="keywordflow">return</span> perp;
36700466         }
368<a name="l00486"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a35">00486</a>         <span class="keyword">inline</span> Vector3 randomDeviant(
36900487             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>&amp; angle,
37000488             <span class="keyword">const</span> Vector3&amp; up = Vector3::ZERO )<span class="keyword"> const</span>
37100489 <span class="keyword">        </span>{
37200490             Vector3 newUp;
37300491
37400492             <span class="keywordflow">if</span> (up == Vector3::ZERO)
37500493             {
37600494                 <span class="comment">// Generate an up vector</span>
37700495                 newUp = this-&gt;perpendicular();
37800496             }
37900497             <span class="keywordflow">else</span>
38000498             {
38100499                 newUp = up;
38200500             }
38300501
38400502             <span class="comment">// Rotate up vector by random amount around this</span>
38500503             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> q;
38600504             q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona8">FromAngleAxis</a>( <a class="code" href="classOgre_1_1Radian.html">Radian</a>(Math::UnitRandom() * Math::TWO_PI), *<span class="keyword">this</span> );
38700505             newUp = q * newUp;
38800506
38900507             <span class="comment">// Finally rotate this by given angle around randomised up</span>
39000508             q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona8">FromAngleAxis</a>( angle, newUp );
39100509             <span class="keywordflow">return</span> q * (*this);
39200510         }
39300511 <span class="preprocessor">#ifndef OGRE_FORCE_ANGLE_TYPES</span>
39400512 <span class="preprocessor"></span>        <span class="keyword">inline</span> Vector3 randomDeviant(
39500513             <a class="code" href="namespaceOgre.html#a420">Real</a> angle,
39600514             <span class="keyword">const</span> Vector3&amp; up = Vector3::ZERO )<span class="keyword"> const</span>
39700515 <span class="keyword">        </span>{
39800516             <span class="keywordflow">return</span> randomDeviant ( <a class="code" href="classOgre_1_1Radian.html">Radian</a>(angle), up );
39900517         }
40000518 <span class="preprocessor">#endif//OGRE_FORCE_ANGLE_TYPES</span>
40100519 <span class="preprocessor"></span>
402<a name="l00526"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a36">00526</a>         <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> getRotationTo(<span class="keyword">const</span> Vector3&amp; dest)<span class="keyword"> const</span>
40300527 <span class="keyword">        </span>{
40400528             <span class="comment">// Based on Stan Melax's article in Game Programming Gems</span>
40500529             <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> q;
40600530             <span class="comment">// Copy, since cannot modify local</span>
40700531             Vector3 v0 = *<span class="keyword">this</span>;
40800532             Vector3 v1 = dest;
40900533             v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">normalise</a>();
41000534             v1.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">normalise</a>();
41100535
41200536             Vector3 c = v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a28">crossProduct</a>(v1);
41300537
41400538             <a class="code" href="namespaceOgre.html#a420">Real</a> d = v0.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a26">dotProduct</a>(v1);
41500539             <span class="comment">// If dot == 1, vectors are the same</span>
41600540             <span class="keywordflow">if</span> (d &gt;= 1.0f)
41700541             {
41800542                 <span class="keywordflow">return</span> Quaternion::IDENTITY;
41900543             }
42000544             <span class="comment">// NB if the crossProduct approaches zero, we get unstable because ANY axis will do</span>
42100545             <span class="comment">// when v0 == -v1</span>
42200546             <span class="keywordflow">if</span> (c.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a37">isZeroLength</a>())
42300547             {
42400548                 Vector3 axis = Vector3::UNIT_X.crossProduct(*<span class="keyword">this</span>);
42500549                 <span class="keywordflow">if</span> (axis.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a37">isZeroLength</a>()) <span class="comment">// pick another if colinear</span>
42600550                     axis = Vector3::UNIT_Y.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a28">crossProduct</a>(*<span class="keyword">this</span>);
42700551                 axis.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">normalise</a>();
42800552                 <a class="code" href="classOgre_1_1Quaternion.html">Quaternion</a> ret;
42900553                 ret.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniona8">FromAngleAxis</a>(<a class="code" href="classOgre_1_1Radian.html">Radian</a>(Math::PI), axis);
43000554                 <span class="keywordflow">return</span> ret;
43100555             }
43200556             <a class="code" href="namespaceOgre.html#a420">Real</a> s = Math::Sqrt( (1+d)*2 );
43300557             assert (s != 0 &amp;&amp; <span class="stringliteral">"Divide by zero!"</span>);
43400558             <a class="code" href="namespaceOgre.html#a420">Real</a> invs = 1 / s;
43500559
43600560
43700561             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;
43800562             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;
43900563             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;
44000564             q.<a class="code" href="classOgre_1_1Quaternion.html#Ogre_1_1Quaterniono0">w</a> = s * 0.5;
44100565             <span class="keywordflow">return</span> q;
44200566         }
44300567
444<a name="l00569"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a37">00569</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> isZeroLength(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
44500570 <span class="keyword">        </span>{
44600571             <a class="code" href="namespaceOgre.html#a420">Real</a> sqlen = (x * x) + (y * y) + (z * z);
44700572             <span class="keywordflow">return</span> (sqlen &lt; (1e-06 * 1e-06));
44800573
44900574         }
45000575
451<a name="l00578"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a38">00578</a>         <span class="keyword">inline</span> Vector3 normalisedCopy(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
45200579 <span class="keyword">        </span>{
45300580             Vector3 ret = *<span class="keyword">this</span>;
45400581             ret.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a27">normalise</a>();
45500582             <span class="keywordflow">return</span> ret;
45600583         }
45700584
458<a name="l00588"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a39">00588</a>         <span class="keyword">inline</span> Vector3 reflect(<span class="keyword">const</span> Vector3&amp; normal)<span class="keyword"> const</span>
45900589 <span class="keyword">        </span>{
46000590             <span class="keywordflow">return</span> Vector3( *<span class="keyword">this</span> - ( 2 * this-&gt;dotProduct(normal) * normal ) );
46100591         }
46200592
463<a name="l00599"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a40">00599</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#a420">Real</a> tolerance = 1e-03)<span class="keyword"> const</span>
46400600 <span class="keyword">        </span>{
46500601             <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;
46600602                 Math::RealEqual(y, rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o1">y</a>, tolerance) &amp;&amp;
46700603                 Math::RealEqual(z, rhs.<a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3o2">z</a>, tolerance);
46800604             
46900605         }
470<a name="l00612"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3a41">00612</a>         <span class="keyword">inline</span> <span class="keywordtype">bool</span> directionEquals(<span class="keyword">const</span> Vector3&amp; rhs,
47100613             <span class="keyword">const</span> <a class="code" href="classOgre_1_1Radian.html">Radian</a>&amp; tolerance)<span class="keyword"> const</span>
47200614 <span class="keyword">        </span>{
47300615             <a class="code" href="namespaceOgre.html#a420">Real</a> dot = dotProduct(rhs);
47400616             <a class="code" href="classOgre_1_1Radian.html">Radian</a> angle = Math::ACos(dot);
47500617
47600618             <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>();
47700619             
47800620         }
47900621
48000622         <span class="comment">// special points</span>
481<a name="l00623"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s0">00623</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 ZERO;
482<a name="l00624"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s1">00624</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_X;
483<a name="l00625"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s2">00625</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_Y;
484<a name="l00626"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s3">00626</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_Z;
485<a name="l00627"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s4">00627</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_X;
486<a name="l00628"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s5">00628</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_Y;
487<a name="l00629"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s6">00629</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 NEGATIVE_UNIT_Z;
488<a name="l00630"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3s7">00630</a>         <span class="keyword">static</span> <span class="keyword">const</span> Vector3 UNIT_SCALE;
48900631
49000634         <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;
491<a name="l00635"></a><a class="code" href="classOgre_1_1Vector3.html#Ogre_1_1Vector3n1">00635</a>             ( std::ostream&amp; o, <span class="keyword">const</span> Vector3&amp; v )
49200636         {
49300637             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>;
49400638             <span class="keywordflow">return</span> o;
49500639         }
49600640     };
49700641
49800642 }
49900643 <span class="preprocessor">#endif</span>
500</pre></div><hr>
501<p>
502Copyright &copy; 2000-2005 by The OGRE Team<br />
503<!--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/>
504This 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/>
505                <!--/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#">
506                <Work rdf:about="">
507                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
508        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
509                </Work>
510                <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> -->
511
512Last modified Sun Feb 12 12:59:54 2006
513</p>
514</body>
515</html>
Note: See TracBrowser for help on using the repository browser.