⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector3_8cpp-source.html

📁 Tixys source code, include G.711, G.726, IMA-ADPCM etc.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00299         x &lt;&lt;= shift;00300         y &lt;&lt;= shift;00301         z &lt;&lt;= 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&lt;&lt;8,l);00324     y = <a class="code" href="classFix.html#e4">Fix::Div</a>(y&lt;&lt;8,l);00325     z = <a class="code" href="classFix.html#e4">Fix::Div</a>(z&lt;&lt;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>&amp; 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>&amp; 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>&amp; point1,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; 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>&amp; point1,<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; 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>&amp; 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&lt;end)00374         {00375         outVectors-&gt;<a class="code" href="classVector3.html#o0">X</a> = inVectors-&gt;<a class="code" href="classVector3.html#o0">X</a>+x;00376         outVectors-&gt;<a class="code" href="classVector3.html#o1">Y</a> = inVectors-&gt;<a class="code" href="classVector3.html#o1">Y</a>+y;00377         outVectors-&gt;<a class="code" href="classVector3.html#o2">Z</a> = inVectors-&gt;<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&lt;end)00388         {00389         outVectors-&gt;<a class="code" href="classVector3.html#o0">X</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors-&gt;X,scale);00390         outVectors-&gt;<a class="code" href="classVector3.html#o1">Y</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors-&gt;Y,scale);00391         outVectors-&gt;<a class="code" href="classVector3.html#o2">Z</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(inVectors-&gt;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>&amp; 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&lt;end)00429         *outVectors++ = *<span class="keyword">this</span> * *inVectors++;00430     }00431 </pre></div><HR><ADDRESS STYLE="align: right;"><SMALL>Generated by&nbsp; <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 + -