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

📄 vector3_8cpp-source.html

📁 Tixys source code, include G.711, G.726, IMA-ADPCM etc.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00157     shift = (16-shift)&gt;&gt;1;00158     <span class="keywordflow">if</span>(shift&gt;0)00159         r &gt;&gt;= shift;00160     <span class="keywordflow">if</span>(shift&lt;0)00161         r &lt;&lt;= -shift;00162 00163     <span class="keywordflow">return</span> r;00164     }00165 00166 <a name="l00167"></a><a class="code" href="classVector3.html#a16">00167</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">int</span> <a class="code" href="classVector3.html#a16">Vector3::CompareLength</a>(ufix length)<span class="keyword"> const</span>00168 <span class="keyword">    </span>{00169     <span class="comment">// calculate the square of this vectors length as ai:af</span>00170     <a class="code" href="group__integers.html#ga2">uint32</a> af;00171     <a class="code" href="group__integers.html#ga2">uint32</a> ai = <a class="code" href="classVector3.html#a18">LengthSquared</a>(af);00172 00173     <span class="comment">// calculate the square of 'length' as bi:bf</span>00174     <a class="code" href="group__integers.html#ga2">uint32</a> l = length&amp;0xFFFF;00175     <a class="code" href="group__integers.html#ga2">uint32</a> h = length&gt;&gt;16;00176     <a class="code" href="group__integers.html#ga2">uint32</a> bf = l*l;00177     <a class="code" href="group__integers.html#ga2">uint32</a> bi = h*h;00178     <a class="code" href="group__integers.html#ga2">uint32</a> r = l*h;00179     <a class="code" href="group__integers.html#ga2">uint32</a> obf = bf;00180     bf += r&lt;&lt;(16+1);00181     <span class="keywordflow">if</span>(bf&lt;obf) bi++;00182     bi += r&gt;&gt;(16-1);00183 00184     <span class="comment">// compare the squares of the length</span>00185     <span class="keywordflow">if</span>(ai&lt;bi)00186         <span class="keywordflow">return</span> -1;00187     <span class="keywordflow">if</span>(ai&gt;bi)00188         <span class="keywordflow">return</span> 1;00189     <span class="keywordflow">if</span>(af&lt;bf)00190         <span class="keywordflow">return</span> -1;00191     <span class="keywordflow">if</span>(af&gt;bf)00192         <span class="keywordflow">return</span> 1;00193     <span class="keywordflow">return</span> 0;00194     }00195 00196 <a name="l00197"></a><a class="code" href="classVector3.html#a17">00197</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">int</span> <a class="code" href="classVector3.html#a17">Vector3::CompareLengths</a>(<span class="keyword">const</span> <a class="code" href="classVector3.html">Vector3</a>&amp; vector)<span class="keyword"> const</span>00198 <span class="keyword">    </span>{00199     <a class="code" href="group__integers.html#ga2">uint32</a> af,bf;00200     <a class="code" href="group__integers.html#ga2">uint32</a> ai = <a class="code" href="classVector3.html#a18">LengthSquared</a>(af);00201     <a class="code" href="group__integers.html#ga2">uint32</a> bi = vector.<a class="code" href="classVector3.html#a18">LengthSquared</a>(bf);00202     00203     <span class="keywordflow">if</span>(ai&lt;bi)00204         <span class="keywordflow">return</span> -1;00205     <span class="keywordflow">if</span>(ai&gt;bi)00206         <span class="keywordflow">return</span> 1;00207     <span class="keywordflow">if</span>(af&lt;bf)00208         <span class="keywordflow">return</span> -1;00209     <span class="keywordflow">if</span>(af&gt;bf)00210         <span class="keywordflow">return</span> 1;00211     <span class="keywordflow">return</span> 0;00212     }00213 00214 <a name="l00215"></a><a class="code" href="classVector3.html#a18">00215</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga2">uint32</a> <a class="code" href="classVector3.html#a18">Vector3::LengthSquared</a>(uint32&amp; fraction)<span class="keyword"> const</span>00216 <span class="keyword">    </span>{00217     <a class="code" href="group__integers.html#ga5">int32</a>   v,r;00218     <a class="code" href="group__integers.html#ga2">uint32</a>  l,h,lo,hi,ol;00219     00220     v = <a class="code" href="classVector3.html#o0">X</a>;00221     l = v&amp;0xFFFF;00222     h = v&gt;&gt;16;00223     lo = l*l;00224     hi = h*h;00225     r = l*h;00226     ol = lo;00227     lo += r&lt;&lt;(16+1);00228     <span class="keywordflow">if</span>(lo&lt;ol) hi++;00229     hi += r&gt;&gt;(16-1);00230     00231     v = <a class="code" href="classVector3.html#o1">Y</a>;00232     l = v&amp;0xFFFF;00233     h = v&gt;&gt;16;00234     ol = lo;00235     lo += l*l;00236     <span class="keywordflow">if</span>(lo&lt;ol) hi++;00237     hi += h*h;00238     r = l*h;00239     ol = lo;00240     lo += r&lt;&lt;(16+1);00241     <span class="keywordflow">if</span>(lo&lt;ol) hi++;00242     hi += r&gt;&gt;(16-1);00243     00244     v = <a class="code" href="classVector3.html#o2">Z</a>;00245     l = v&amp;0xFFFF;00246     h = v&gt;&gt;16;00247     ol = lo;00248     lo += l*l;00249     <span class="keywordflow">if</span>(lo&lt;ol) hi++;00250     hi += h*h;00251     r = l*h;00252     ol = lo;00253     lo += r&lt;&lt;(16+1);00254     <span class="keywordflow">if</span>(lo&lt;ol) hi++;00255     hi += r&gt;&gt;(16-1);00256 00257     fraction = lo;00258     <span class="keywordflow">return</span> hi;00259     }00260 00261 <a name="l00262"></a><a class="code" href="classVector3.html#d0">00262</a> <span class="keywordtype">void</span> <a class="code" href="classVector3.html#d0">Vector3::NormaliseComponents</a>(uint bits)00263     {00264     <span class="comment">// get components</span>00265     <a class="code" href="group__fix.html#ga0">fix</a> x = <a class="code" href="classVector3.html#o0">X</a>;00266     <a class="code" href="group__fix.html#ga0">fix</a> y = <a class="code" href="classVector3.html#o1">Y</a>;00267     <a class="code" href="group__fix.html#ga0">fix</a> z = <a class="code" href="classVector3.html#o2">Z</a>;00268 00269     <span class="comment">// find the magnitude of the largest component</span>00270     <a class="code" href="group__fix.html#ga1">ufix</a> max = x;00271     <span class="keywordflow">if</span>(x&lt;0)00272         max = ~x;00273 00274     <a class="code" href="group__fix.html#ga1">ufix</a> ay = y;00275     <span class="keywordflow">if</span>(y&lt;0)00276         ay = ~y;00277     <span class="keywordflow">if</span>(ay&gt;max)00278         max = ay;00279 00280     <a class="code" href="group__fix.html#ga1">ufix</a> az = z;00281     <span class="keywordflow">if</span>(z&lt;0)00282         az = ~z;00283     <span class="keywordflow">if</span>(az&gt;max)00284         max = az;00285 00286     <span class="comment">// calculate shift value to get msb in correct place</span>00287     <span class="keywordtype">int</span> shift = MostSignificantBit(max)-bits;00288 00289     <span class="comment">// shift all components</span>00290     <span class="keywordflow">if</span>(shift&gt;0)00291         {00292         x &gt;&gt;= shift;00293         y &gt;&gt;= shift;00294         z &gt;&gt;= shift;00295         }00296     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(shift&lt;0)00297         {00298         shift = -shift;

⌨️ 快捷键说明

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