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

📄 vector3_8cpp-source.html

📁 Tixys source code, include G.711, G.726, IMA-ADPCM etc.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>maths/vector3.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.1 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><div class="nav"><a class="el" href="dir_000003.html">maths</a></div><h1>vector3.cpp</h1><a href="vector3_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 00025 <span class="preprocessor">#include "<a class="code" href="common_8h.html">common.h</a>"</span>00026 <span class="preprocessor">#include "<a class="code" href="vector3_8h.html">vector3.h</a>"</span>00027 00028 00029 <span class="comment">/*</span>00030 <span class="comment">Members or class Vector3</span>00031 <span class="comment">*/</span>00032 00033 <a name="l00034"></a><a class="code" href="classVector3.html#a2">00034</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#a2">Vector3::operator - </a>()<span class="keyword"> const</span>00035 <span class="keyword">    </span>{00036     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(-<a class="code" href="classVector3.html#o0">X</a>,-<a class="code" href="classVector3.html#o1">Y</a>,-<a class="code" href="classVector3.html#o2">Z</a>);00037     }00038 00039 <a name="l00040"></a><a class="code" href="classVector3.html#a3">00040</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#a3">Vector3::operator + </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00041 <span class="keyword">    </span>{00042     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(<a class="code" href="classVector3.html#o0">X</a>+vector.X,<a class="code" href="classVector3.html#o1">Y</a>+vector.Y,<a class="code" href="classVector3.html#o2">Z</a>+vector.Z);00043     }00044 00045 <a name="l00046"></a><a class="code" href="classVector3.html#a4">00046</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#a2">Vector3::operator - </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00047 <span class="keyword">    </span>{00048     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(<a class="code" href="classVector3.html#o0">X</a>-vector.X,<a class="code" href="classVector3.html#o1">Y</a>-vector.Y,<a class="code" href="classVector3.html#o2">Z</a>-vector.Z);00049     }00050 00051 <a name="l00052"></a><a class="code" href="classVector3.html#a5">00052</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#a5">Vector3::operator * </a>(fix scalar)<span class="keyword"> const</span>00053 <span class="keyword">    </span>{00054     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(Fix::MulNS(<a class="code" href="classVector3.html#o0">X</a>,scalar),Fix::MulNS(<a class="code" href="classVector3.html#o1">Y</a>,scalar),Fix::MulNS(<a class="code" href="classVector3.html#o2">Z</a>,scalar));00055     }00056 00057 <a name="l00058"></a><a class="code" href="classVector3.html#a6">00058</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#a6">Vector3::operator / </a>(fix scalar)<span class="keyword"> const</span>00059 <span class="keyword">    </span>{00060     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(Fix::Div(<a class="code" href="classVector3.html#o0">X</a>,scalar),Fix::Div(<a class="code" href="classVector3.html#o1">Y</a>,scalar),Fix::Div(<a class="code" href="classVector3.html#o2">Z</a>,scalar));00061     }00062 00063 <a name="l00064"></a><a class="code" href="classVector3.html#a7">00064</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a>&amp; <a class="code" href="classVector3.html#a7">Vector3::operator += </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)00065     {00066     <a class="code" href="classVector3.html#o0">X</a> += vector.<a class="code" href="classVector3.html#o0">X</a>;00067     <a class="code" href="classVector3.html#o1">Y</a> += vector.<a class="code" href="classVector3.html#o1">Y</a>;00068     <a class="code" href="classVector3.html#o2">Z</a> += vector.<a class="code" href="classVector3.html#o2">Z</a>;00069     <span class="keywordflow">return</span> *<span class="keyword">this</span>;00070     }00071 00072 <a name="l00073"></a><a class="code" href="classVector3.html#a8">00073</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a>&amp; <a class="code" href="classVector3.html#a8">Vector3::operator -= </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)00074     {00075     <a class="code" href="classVector3.html#o0">X</a> -= vector.<a class="code" href="classVector3.html#o0">X</a>;00076     <a class="code" href="classVector3.html#o1">Y</a> -= vector.<a class="code" href="classVector3.html#o1">Y</a>;00077     <a class="code" href="classVector3.html#o2">Z</a> -= vector.<a class="code" href="classVector3.html#o2">Z</a>;00078     <span class="keywordflow">return</span> *<span class="keyword">this</span>;00079     }00080 00081 <a name="l00082"></a><a class="code" href="classVector3.html#a9">00082</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a>&amp; <a class="code" href="classVector3.html#a9">Vector3::operator *= </a>(fix scalar)00083     {00084     <a class="code" href="classVector3.html#o0">X</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o0">X</a>,scalar);00085     <a class="code" href="classVector3.html#o1">Y</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o1">Y</a>,scalar);00086     <a class="code" href="classVector3.html#o2">Z</a> = <a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o2">Z</a>,scalar);00087     <span class="keywordflow">return</span> *<span class="keyword">this</span>;00088     }00089 00090 <a name="l00091"></a><a class="code" href="classVector3.html#a10">00091</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="classVector3.html">Vector3</a>&amp; <a class="code" href="classVector3.html#a10">Vector3::operator /= </a>(fix scalar)00092     {00093     <a class="code" href="classVector3.html#o0">X</a> = <a class="code" href="classFix.html#e4">Fix::Div</a>(<a class="code" href="classVector3.html#o0">X</a>,scalar);00094     <a class="code" href="classVector3.html#o1">Y</a> = <a class="code" href="classFix.html#e4">Fix::Div</a>(<a class="code" href="classVector3.html#o1">Y</a>,scalar);00095     <a class="code" href="classVector3.html#o2">Z</a> = <a class="code" href="classFix.html#e4">Fix::Div</a>(<a class="code" href="classVector3.html#o2">Z</a>,scalar);00096     <span class="keywordflow">return</span> *<span class="keyword">this</span>;00097     }00098 00099 <a name="l00100"></a><a class="code" href="classVector3.html#a11">00100</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">bool</span> <a class="code" href="classVector3.html#a11">Vector3::operator == </a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00101 <span class="keyword">    </span>{00102     <span class="keywordflow">return</span> (<a class="code" href="classVector3.html#o0">X</a>==vector.X &amp;&amp; <a class="code" href="classVector3.html#o1">Y</a>==vector.Y &amp;&amp; <a class="code" href="classVector3.html#o2">Z</a>==vector.Z);00103     }00104 00105 <a name="l00106"></a><a class="code" href="classVector3.html#a13">00106</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga0">fix</a> <a class="code" href="classVector3.html#a13">Vector3::DotProduct</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00107 <span class="keyword">    </span>{00108     <span class="keywordflow">return</span> <a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o0">X</a>,vector.X)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o1">Y</a>,vector.Y)+<a class="code" href="classFix.html#e3">Fix::MulNS</a>(<a class="code" href="classVector3.html#o2">Z</a>,vector.Z);00109     }00110 00111 <a name="l00112"></a><a class="code" href="classVector3.html#a14">00112</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#a14">Vector3::CrossProduct</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00113 <span class="keyword">    </span>{00114     <span class="keywordflow">return</span> <a class="code" href="classVector3.html#a0">Vector3</a>(Fix::MulNS(<a class="code" href="classVector3.html#o1">Y</a>,vector.Z)-Fix::MulNS(<a class="code" href="classVector3.html#o2">Z</a>,vector.Y),00115                    Fix::MulNS(Z,vector.X)-Fix::MulNS(<a class="code" href="classVector3.html#o0">X</a>,vector.Z),00116                    Fix::MulNS(X,vector.Y)-Fix::MulNS(Y,vector.X));00117     }00118 00119 00120 <span class="keyword">static</span> <a class="code" href="group__integers.html#ga6">uint</a> MostSignificantBit(uint32 a)00121     {00122     <a class="code" href="group__integers.html#ga6">uint</a> b = 0;00123     <span class="keywordflow">if</span>(a&gt;=(1&lt;&lt;16)) b |= 16, a &gt;&gt;= 16;00124     <span class="keywordflow">if</span>(a&gt;=(1&lt;&lt;8))  b |= 8,  a &gt;&gt;= 8;00125     <span class="keywordflow">if</span>(a&gt;=(1&lt;&lt;4))  b |= 4,  a &gt;&gt;= 4;00126     <span class="keywordflow">if</span>(a&gt;=(1&lt;&lt;2))  b |= 2,  a &gt;&gt;= 2;00127     b |= a&gt;&gt;1;00128     <span class="keywordflow">return</span> b;00129     }00130 00131 <a name="l00132"></a><a class="code" href="classVector3.html#a15">00132</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__fix.html#ga1">ufix</a> <a class="code" href="classVector3.html#a15">Vector3::Length</a>()<span class="keyword"> const</span>00133 <span class="keyword">    </span>{00134     <span class="comment">// calculate square of the length</span>00135     <a class="code" href="group__integers.html#ga6">uint</a> f;00136     <a class="code" href="group__integers.html#ga6">uint</a> i = <a class="code" href="classVector3.html#a18">LengthSquared</a>(f);00137     00138     <span class="comment">// if no integer part, return the square root</span>00139     <span class="keywordflow">if</span>(!i)00140         <span class="keywordflow">return</span> <a class="code" href="classFix.html#e5">Fix::Sqrt</a>(f)&gt;&gt;8;00141 00142     <span class="comment">// shift square of result so it fits into 32 bits</span>00143     <span class="keywordtype">int</span> shift = (2+MostSignificantBit(i))&amp;~1;00144     <a class="code" href="group__fix.html#ga1">ufix</a> s;00145     <span class="keywordflow">if</span>(shift==32)00146         s = i;00147     <span class="keywordflow">else</span>00148         {00149         s = f&gt;&gt;shift;00150         s |= i&lt;&lt;(32-shift);00151         }00152 00153     <span class="comment">// take the square root</span>00154     <a class="code" href="group__fix.html#ga1">ufix</a> r = <a class="code" href="classFix.html#e5">Fix::Sqrt</a>(s);00155 00156     <span class="comment">// shift result to get binary point in the correct place</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -