📄 vector3_8cpp-source.html
字号:
00299 x <<= shift;00300 y <<= shift;00301 z <<= shift;00302 }00303 00304 <a class="code" href="classVector3.html#o0">X</a> = x;00305 <a class="code" href="classVector3.html#o1">Y</a> = y;00306 <a class="code" href="classVector3.html#o2">Z</a> = z;00307 }00308 00309 <a name="l00310"></a><a class="code" href="classVector3.html#a19">00310</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a> <a class="code" href="classVector3.html#a19">Vector3::UnitVector</a>()<span class="keyword"> const</span>00311 <span class="keyword"> </span>{00312 <span class="comment">// normalise component values to 15 bits</span>00313 <a class="code" href="classVector3.html">Vector3</a> normalised(*<span class="keyword">this</span>);00314 normalised.<a class="code" href="classVector3.html#d0">NormaliseComponents</a>(14);00315 00316 <span class="comment">// calculate length of normalised vector</span>00317 <a class="code" href="group__fix.html#ga0">fix</a> x = normalised.<a class="code" href="classVector3.html#o0">X</a>;00318 <a class="code" href="group__fix.html#ga0">fix</a> y = normalised.<a class="code" href="classVector3.html#o1">Y</a>;00319 <a class="code" href="group__fix.html#ga0">fix</a> z = normalised.<a class="code" href="classVector3.html#o2">Z</a>;00320 <a class="code" href="group__fix.html#ga1">ufix</a> l = <a class="code" href="classFix.html#e5">Fix::Sqrt</a>(x*x+y*y+z*z);00321 00322 <span class="comment">// divide components by length to get the unit vector</span>00323 x = <a class="code" href="classFix.html#e4">Fix::Div</a>(x<<8,l);00324 y = <a class="code" href="classFix.html#e4">Fix::Div</a>(y<<8,l);00325 z = <a class="code" href="classFix.html#e4">Fix::Div</a>(z<<8,l);00326 00327 <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(x,y,z);00328 }00329 00330 <a name="l00331"></a><a class="code" href="classVector3.html#a20">00331</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a> <a class="code" href="classVector3.html#a20">Vector3::Normal</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& vector)<span class="keyword"> const</span>00332 <span class="keyword"> </span>{00333 <span class="comment">// scale both vectors to 15 bits</span>00334 <a class="code" href="classVector3.html">Vector3</a> a(*<span class="keyword">this</span>);00335 a.<a class="code" href="classVector3.html#d0">NormaliseComponents</a>(14);00336 <a class="code" href="classVector3.html">Vector3</a> b(vector);00337 b.<a class="code" href="classVector3.html#d0">NormaliseComponents</a>(14);00338 00339 <span class="comment">// calculate cross product (a vector normal to the two vectors)</span>00340 a = <a class="code" href="classVector3.html#a0">Vector3</a>(a.<a class="code" href="classVector3.html#o1">Y</a>*b.<a class="code" href="classVector3.html#o2">Z</a> - a.<a class="code" href="classVector3.html#o2">Z</a>*b.<a class="code" href="classVector3.html#o1">Y</a>,00341 a.<a class="code" href="classVector3.html#o2">Z</a>*b.<a class="code" href="classVector3.html#o0">X</a> - a.<a class="code" href="classVector3.html#o0">X</a>*b.<a class="code" href="classVector3.html#o2">Z</a>,00342 a.<a class="code" href="classVector3.html#o0">X</a>*b.<a class="code" href="classVector3.html#o1">Y</a> - a.<a class="code" href="classVector3.html#o1">Y</a>*b.<a class="code" href="classVector3.html#o0">X</a>);00343 00344 <span class="comment">// return the normal as a length 1.0 unit vector</span>00345 <span class="keywordflow">return</span> a.<a class="code" href="classVector3.html#a19">UnitVector</a>();00346 }00347 00348 <a name="l00349"></a><a class="code" href="classVector3.html#a21">00349</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga2">fixangle</a> <a class="code" href="classVector3.html#a21">Vector3::Angle</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& vector)<span class="keyword"> const</span>00350 <span class="keyword"> </span>{00351 <span class="keywordflow">return</span> <a class="code" href="classFix.html#e12">Fix::ACos</a>(<a class="code" href="classVector3.html#a19">UnitVector</a>().<a class="code" href="classVector3.html#a13">DotProduct</a>(vector.UnitVector()));00352 }00353 00354 <a name="l00355"></a><a class="code" href="classVector3.html#a22">00355</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a> <a class="code" href="classVector3.html#a20">Vector3::Normal</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& point1,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& point2)<span class="keyword"> const</span>00356 <span class="keyword"> </span>{00357 <span class="keywordflow">return</span> (point1-*<span class="keyword">this</span>).<a class="code" href="classVector3.html#a20">Normal</a>(point2-*<span class="keyword">this</span>);00358 }00359 00360 <a name="l00361"></a><a class="code" href="classVector3.html#a23">00361</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga2">fixangle</a> <a class="code" href="classVector3.html#a21">Vector3::Angle</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& point1,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& point2)<span class="keyword"> const</span>00362 <span class="keyword"> </span>{00363 <span class="keywordflow">return</span> (point1-*<span class="keyword">this</span>).<a class="code" href="classVector3.html#a21">Angle</a>(point2-*<span class="keyword">this</span>);00364 }00365 00366 <a name="l00367"></a><a class="code" href="classVector3.html#e0">00367</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">void</span> <a class="code" href="classVector3.html#e0">Vector3::Translate</a>(<a class="code" href="classVector3.html">Vector3</a>* outVectors,uint vectorCount,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>* inVectors,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& offset)00368 {00369 <a class="code" href="group__fix.html#ga0">fix</a> x = offset.<a class="code" href="classVector3.html#o0">X</a>;00370 <a class="code" href="group__fix.html#ga0">fix</a> y = offset.<a class="code" href="classVector3.html#o1">Y</a>;00371 <a class="code" href="group__fix.html#ga0">fix</a> z = offset.<a class="code" href="classVector3.html#o2">Z</a>;00372 <a class="code" href="classVector3.html">Vector3</a>* end = outVectors+vectorCount;00373 <span class="keywordflow">while</span>(outVectors<end)00374 {00375 outVectors-><a class="code" href="classVector3.html#o0">X</a> = inVectors-><a class="code" href="classVector3.html#o0">X</a>+x;00376 outVectors-><a class="code" href="classVector3.html#o1">Y</a> = inVectors-><a class="code" href="classVector3.html#o1">Y</a>+y;00377 outVectors-><a class="code" href="classVector3.html#o2">Z</a> = inVectors-><a class="code" href="classVector3.html#o2">Z</a>+z;00378 ++inVectors;00379 ++outVectors;00380 }00381 }00382 00383 <a name="l00384"></a><a class="code" href="classVector3.html#e1">00384</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">void</span> <a class="code" href="classVector3.html#e1">Vector3::Scale</a>(<a class="code" href="classVector3.html">Vector3</a>* outVectors,uint vectorCount,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>* inVectors,fix scale)00385 {00386 <a class="code" href="classVector3.html">Vector3</a>* end = outVectors+vectorCount;00387 <span class="keywordflow">while</span>(outVectors<end)00388 {00389 outVectors-><a class="code" href="classVector3.html#o0">X</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors->X,scale);00390 outVectors-><a class="code" href="classVector3.html#o1">Y</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors->Y,scale);00391 outVectors-><a class="code" href="classVector3.html#o2">Z</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors->Z,scale);00392 ++inVectors;00393 ++outVectors;00394 }00395 }00396 00397 00398 <span class="comment">/*</span>00399 <span class="comment">Members of class Matrix3</span>00400 <span class="comment">*/</span>00401 00402 <a name="l00403"></a><a class="code" href="classMatrix3.html#a2">00403</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a> <a class="code" href="classMatrix3.html#a2">Matrix3::operator * </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>& vector)<span class="keyword"> const</span>00404 <span class="keyword"> </span>{00405 <a class="code" href="group__fix.html#ga0">fix</a> ax = vector.<a class="code" href="classVector3.html#o0">X</a>;00406 <a class="code" href="group__fix.html#ga0">fix</a> ay = vector.<a class="code" href="classVector3.html#o1">Y</a>;00407 <a class="code" href="group__fix.html#ga0">fix</a> az = vector.<a class="code" href="classVector3.html#o2">Z</a>;00408 00409 <a class="code" href="group__fix.html#ga0">fix</a> rx = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(ax,<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o0">X</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(ay,<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o1">Y</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(az,<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o2">Z</a>);00410 <a class="code" href="group__fix.html#ga0">fix</a> ry = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(ax,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o0">X</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(ay,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o1">Y</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(az,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o2">Z</a>);00411 <a class="code" href="group__fix.html#ga0">fix</a> rz = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(ax,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o0">X</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(ay,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o1">Y</a>)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(az,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o2">Z</a>);00412 00413 <span class="keywordflow">return</span> <a class="code" href="classVector3.html">Vector3</a>(rx,ry,rz);00414 }00415 00416 <a name="l00417"></a><a class="code" href="classMatrix3.html#a3">00417</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classMatrix3.html">Matrix3</a> <a class="code" href="classMatrix3.html#a3">Matrix3::Transposition</a>()<span class="keyword"> const</span>00418 <span class="keyword"> </span>{00419 <span class="keywordflow">return</span> <a class="code" href="classMatrix3.html#a0">Matrix3</a>(<a class="code" href="classVector3.html">Vector3</a>(<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o0">X</a>,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o0">X</a>,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o0">X</a>),00420 <a class="code" href="classVector3.html">Vector3</a>(<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o1">Y</a>,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o1">Y</a>,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o1">Y</a>),00421 <a class="code" href="classVector3.html">Vector3</a>(<a class="code" href="classMatrix3.html#o0">Row1</a>.<a class="code" href="classVector3.html#o2">Z</a>,<a class="code" href="classMatrix3.html#o1">Row2</a>.<a class="code" href="classVector3.html#o2">Z</a>,<a class="code" href="classMatrix3.html#o2">Row3</a>.<a class="code" href="classVector3.html#o2">Z</a>));00422 }00423 00424 <a name="l00425"></a><a class="code" href="classMatrix3.html#a4">00425</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">void</span> <a class="code" href="classMatrix3.html#a4">Matrix3::Transform</a>(<a class="code" href="classVector3.html">Vector3</a>* outVectors,uint vectorCount,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>* inVectors)00426 {00427 <a class="code" href="classVector3.html">Vector3</a>* end = outVectors+vectorCount;00428 <span class="keywordflow">while</span>(outVectors<end)00429 *outVectors++ = *<span class="keyword">this</span> * *inVectors++;00430 }00431 </pre></div><HR><ADDRESS STYLE="align: right;"><SMALL>Generated by <A HREF="http://www.doxygen.org/index.html"><IMG SRC="doxygen.png" ALT="doxygen" ALIGN="middle" BORDER="0"></A> 1.4.1</SMALL></ADDRESS></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -