<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_len3d</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/9496/rss</id><updated>2012-04-18T08:29:14Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/9496/rss"/><entry><id>http://www.cnblogs.com/len3d/archive/2012/04/18/2455510.html</id><title type="text">Visual Studio 2010 单步跟踪/调试变慢解决方法！</title><summary type="text">在VS里面选择：Tools &gt; Import and Export Settings… &gt; Reset all settings删掉当前设置！本人亲自尝试过，立刻变得飞快！</summary><published>2012-04-18T08:29:00Z</published><updated>2012-04-18T08:29:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2012/04/18/2455510.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2012/04/18/2455510.html"/><content type="html">&lt;p&gt;&lt;span style="color: #1f497d"&gt;在VS里面选择：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #1f497d"&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #1f497d"&gt;Tools &amp;gt; Import and Export Settings&amp;#8230; &amp;gt; Reset all settings&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #1f497d"&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #1f497d"&gt;删掉当前设置！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #1f497d"&gt;本人亲自尝试过，立刻变得飞快！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color: #1f497d"&gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2455510.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2012/04/18/2455510.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2012/04/14/2447784.html</id><title type="text">How to compute ray differentials for parametric curves</title><summary type="text">Assume a parametric curve can be denoted by P(t), any attribute T can be interpolated linearly with:T = (1 - t) * T0 + t * T1 (1)T0 is the attribute at t=0, and T1 is the attribute at t=1.Differentiate equation (1) we have:dTdx = (T1 - T0) * dtdx (2)Now the problem turns into how to compute dtdx.Usi</summary><published>2012-04-14T14:50:00Z</published><updated>2012-04-14T14:50:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2012/04/14/2447784.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2012/04/14/2447784.html"/><content type="html">&lt;p&gt;Assume a parametric curve can be denoted by P(t), any attribute T can be interpolated linearly with:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;T = (1 - t) * T0 + t * T1&amp;nbsp; (1)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;T0 is the attribute at t=0, and T1 is the attribute at t=1.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Differentiate equation (1) we have:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;dTdx = (T1 - T0) * dtdx&amp;nbsp; (2)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now the problem turns into how to compute dtdx.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Using Chain Rule, we have:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;dPdt * dtdx = dPdx&amp;nbsp; (3)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We already know how to compute dPdx as described in &lt;span class="st"&gt;Tracing Ray Differentials. Homan Igehy. Computer Science Department. Stanford University., so we solve dtdx by:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;dtdx = dPdx / dPdt&amp;nbsp; (4)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;dPdt can also be easily computed since it's just the tangent of the curve. Substituting (4) into (2) we got the final form:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;dTdx = (T1 - T0) * dPdx / dPdt&amp;nbsp; (5)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;This is the ray differential of any curve attribute T along raster x.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="st"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2447784.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2012/04/14/2447784.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2012/04/10/2439897.html</id><title type="text">A Comparison Of MC, QMC, RQMC</title><summary type="text">MC:QMC:RQMC:Convergence speed:QMC &gt; RQMC &gt; MCSampling patterns:QMC &gt; RQMC &gt; MCSo RQMC is the balance between MC and QMC.</summary><published>2012-04-10T00:37:00Z</published><updated>2012-04-10T00:37:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2012/04/10/2439897.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2012/04/10/2439897.html"/><content type="html">&lt;p&gt;MC:&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/len3d/carpaint_MC.jpg" width="640" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;QMC:&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/len3d/carpaint_QMC.jpg" width="640" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;RQMC:&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/len3d/carpaint_RQMC.jpg" width="640" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Convergence speed:&lt;/p&gt;&lt;p&gt;QMC &amp;gt; RQMC &amp;gt; MC&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Sampling patterns:&lt;/p&gt;&lt;p&gt;QMC &amp;gt; RQMC &amp;gt; MC&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;So RQMC is the balance between MC and QMC.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2439897.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2012/04/10/2439897.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2012/03/09/2387675.html</id><title type="text">Plenty Of Tricks to Get Irradiance Caching Practical</title><summary type="text">http://cgg.mff.cuni.cz/~jaroslav/papers/2008-irradiance_caching_class/05-jk-implementation_details.pdf</summary><published>2012-03-09T07:21:00Z</published><updated>2012-03-09T07:21:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2012/03/09/2387675.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2012/03/09/2387675.html"/><content type="html">&lt;a href="http://cgg.mff.cuni.cz/~jaroslav/papers/2008-irradiance_caching_class/05-jk-implementation_details.pdf"&gt;http://cgg.mff.cuni.cz/~jaroslav/papers/2008-irradiance_caching_class/05-jk-implementation_details.pdf&lt;/a&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2387675.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2012/03/09/2387675.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2012/02/11/2346235.html</id><title type="text">One Way to Suspend Another Thread In Linux</title><summary type="text">// at process start call init_pthread_suspending to install the handlers// to suspend a thread use pthread_kill(thread_id, SUSPEND_SIG)// to resume a thread use pthread_kill(thread_id, RESUME_SIG)#include &lt;signal.h&gt;#define RESUME_SIG SIGUSR2#define SUSPEND_SIG SIGUSR1static sigset_t wait_mask;</summary><published>2012-02-10T16:08:00Z</published><updated>2012-02-10T16:08:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2012/02/11/2346235.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2012/02/11/2346235.html"/><content type="html">// at process start call init_pthread_suspending to install the handlers&lt;br /&gt;// to suspend a thread use pthread_kill(thread_id, SUSPEND_SIG)&lt;br /&gt;// to resume a thread use pthread_kill(thread_id, RESUME_SIG)&lt;br /&gt;&lt;br /&gt;#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;&lt;br /&gt;#define RESUME_SIG SIGUSR2&lt;br /&gt;#define SUSPEND_SIG SIGUSR1&lt;br /&gt;&lt;br /&gt;static sigset_t wait_mask;&lt;br /&gt;static __thread int suspended; // per-thread flag&lt;br /&gt;&lt;br /&gt;void resume_handler(int sig)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; suspended = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void suspend_handler(int sig)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (suspended) return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; suspended = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do sigsuspend(&amp;amp;wait_mask); while (suspended);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void init_pthread_suspending()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct sigaction sa;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigfillset(&amp;amp;wait_mask);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigdelset(&amp;amp;wait_mask, SUSPEND_SIG)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigdelset(&amp;amp;wait_mask, RESUME_SIG);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigfillset(&amp;amp;sa.sa_mask);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.sa_flags = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.sa_handler = resume_handler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigaction(RESUME_SIG, &amp;amp;sa, NULL);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sa.sa_handler = suspend_handler;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sigaction(SUSPEND_SIG, &amp;amp;sa, NULL);&lt;br /&gt;}&lt;br /&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2346235.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2012/02/11/2346235.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2011/10/18/2216386.html</id><title type="text">在Windows 7 64-bit上安装Visual Studio 2008失败的解决方案</title><summary type="text">错误提示是：Runtime Pre-requisites: [2] Error: Installation failed for component Runtime Pre-requisites. MSI returned error code 16031. 如果你的机器上有.NET Framework 4.0 Extended和.NET Framework 4.0 Client Profile，卸载它们。2. 重启电脑，这步是必需的。3. 使用Run as Administrator方式运行Visual Studio 2008的setup.exe。这样应该就能成功安装了。</summary><published>2011-10-18T05:20:00Z</published><updated>2011-10-18T05:20:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2011/10/18/2216386.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2011/10/18/2216386.html"/><content type="html">&lt;p&gt;错误提示是：&lt;/p&gt;&lt;p&gt;Runtime Pre-requisites: [2] Error: Installation failed for component Runtime Pre-requisites. MSI returned error code 1603&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1. 如果你的机器上有.NET Framework 4.0 Extended和.NET Framework 4.0 Client Profile，卸载它们。&lt;/p&gt;&lt;p&gt;2. 重启电脑，这步是必需的。&lt;/p&gt;&lt;p&gt;3. 使用Run as Administrator方式运行Visual Studio 2008的setup.exe。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这样应该就能成功安装了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2216386.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2011/10/18/2216386.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2011/09/09/2172528.html</id><title type="text">How to compute dPdu, dPdv for triangles</title><summary type="text">For triangles, as well as other planar shapes, there's an affine mapping from parametric space to object space, said M.In parametric space, we know the parametric coordiantes for 3 triangle corners are (u0, v0), (u1, v1), (u2, v2) respectively.While in object space, the 3D coordinates for 3 tria</summary><published>2011-09-09T06:46:00Z</published><updated>2011-09-09T06:46:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2011/09/09/2172528.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2011/09/09/2172528.html"/><content type="html">&lt;p&gt;For triangles, as well as other planar shapes, there's an affine mapping from parametric space to object space, said M.&lt;/p&gt;&lt;p&gt;In parametric space, we know the parametric coordiantes for 3 triangle corners are (u0, v0), (u1, v1), (u2, v2) respectively.&lt;/p&gt;&lt;p&gt;While in object space, the 3D coordinates for 3 triangle corners are P0, P1, P2.&lt;/p&gt;&lt;p&gt;So with the mapping M, we can transform the difference vectors (du1, dv1) = (u1 - u0, v1 - v0), and (du2, dv2) = (u2 - u0, v2 - v0) to the difference vectors in object space, said dP1 = P1 - P0, dP2 = P2 - P0, dP1, dP2 are 3D vectors.&lt;/p&gt;&lt;p&gt;The equation looks like:&lt;/p&gt;&lt;p&gt;(dP1)&amp;nbsp;&amp;nbsp;&amp;nbsp; (du1 dv1)&lt;/p&gt;&lt;p&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| = |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| * M&lt;/p&gt;&lt;p&gt;(dP2)&amp;nbsp;&amp;nbsp;&amp;nbsp; (du2 dv2)&lt;/p&gt;&lt;p&gt;Assume M = (K1, K2), K1, K2 are 3D vectors, the equation can be rewritten with:&lt;/p&gt;&lt;p&gt;(dP1)&amp;nbsp;&amp;nbsp;&amp;nbsp; (du1 dv1)&amp;nbsp;&amp;nbsp; (K1)&lt;/p&gt;&lt;p&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| = |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| * |&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(1)&lt;/p&gt;&lt;p&gt;(dP2)&amp;nbsp;&amp;nbsp;&amp;nbsp; (du2 dv2)&amp;nbsp;&amp;nbsp; (K2)&lt;/p&gt;&lt;p&gt;Solve K1, K2, we get:&lt;/p&gt;&lt;p&gt;(K1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(du1 dv1)&amp;nbsp;&amp;nbsp; (dP1)&lt;/p&gt;&lt;p&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; | = INV|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | * |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/p&gt;&lt;p&gt;(K2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (du2 dv2)&amp;nbsp;&amp;nbsp; (dP2)&lt;/p&gt;&lt;p&gt;Now we need to understand what are K1, K2, using equation (1) we have:&lt;/p&gt;&lt;p&gt;dPdu * du = (du 0) * (K1) = K1 * du, thus we know dPdu = K1&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(K2)&lt;/p&gt;&lt;p&gt;Similarly,&lt;/p&gt;&lt;p&gt;dPdv * dv = (0 dv) * (K1) = K1 * dv, thus we know dPdv = K2&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(K2)&lt;/p&gt;&lt;p&gt;Finally we got:&lt;/p&gt;&lt;p&gt;(dPdu)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(du1 dv1)&amp;nbsp;&amp;nbsp; (dP1)&lt;/p&gt;&lt;p&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | = INV|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | * |&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/p&gt;&lt;p&gt;(dPdv)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (du2 dv2)&amp;nbsp;&amp;nbsp; (dP2)&lt;/p&gt;&lt;p&gt;Which satisfies:&lt;/p&gt;&lt;p&gt;P(u + du, v) = P(u, v) + dPdu * du&lt;/p&gt;&lt;p&gt;P(u, v + dv) = P(u, v) + dPdv * dv&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2172528.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2011/09/09/2172528.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2011/07/26/2117190.html</id><title type="text">More ideas on kd-tree construction</title><summary type="text">1. Processing each l-th primitive at the binning step, where l=log10(N) and N is number of primitives in the current node.2. Experiments demonstrated that it is beneficial to switch to exact SAH computation when the number of primitives in the current node is less or equal to the number of bins.3. E</summary><published>2011-07-26T06:26:00Z</published><updated>2011-07-26T06:26:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2011/07/26/2117190.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2011/07/26/2117190.html"/><content type="html">&lt;p&gt;1. Processing each l-th primitive at the binning step, where &lt;/p&gt;&lt;p&gt;l=log10(N) and N is number of primitives in the current node.&lt;br /&gt;2. Experiments demonstrated that it is beneficial to switch to &lt;/p&gt;&lt;p&gt;exact SAH computation when the number of primitives in the current &lt;/p&gt;&lt;p&gt;node is less or equal to the number of bins.&lt;br /&gt;3. Experiments show that using the same fixed number of 32 bins at &lt;/p&gt;&lt;p&gt;any level is sufficient.&lt;br /&gt;4. Re-binning with 32 * 2^N, N is the tree depth.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2117190.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2011/07/26/2117190.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2011/07/15/2107713.html</id><title type="text">How to use Intel C++ Compiler in Visual Studio 2008</title><summary type="text">Here are some tips:1. Convert all VC projects to ICL projects by Use Intel C++.2. SetStructure Alignmentto 1 byte or 4 byte, otherwise ICL may default to 16 byte.3. If you don't want to have dependency on libmmd.dll, use Multi-threaded rather than Multi-threaded DLL to static link with ICL runti</summary><published>2011-07-15T10:02:00Z</published><updated>2011-07-15T10:02:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2011/07/15/2107713.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2011/07/15/2107713.html"/><content type="html">&lt;p&gt;Here are some tips:&lt;/p&gt;&lt;p&gt;1. Convert all VC projects to ICL projects by Use Intel C++.&lt;/p&gt;&lt;p&gt;2. Set&amp;nbsp;Structure Alignment&amp;nbsp;to 1 byte or 4 byte, otherwise ICL may default to 16 byte.&lt;/p&gt;&lt;p&gt;3. If you don't want to have dependency on libmmd.dll, use Multi-threaded rather than Multi-threaded DLL to static link with ICL runtime.&lt;/p&gt;&lt;p&gt;4. It's strongly recommended to build 3ds Max plugin using MSVC, instead of ICL, and you must set Structure Alignment to Default, which 3ds Max always uses(3ds Max is built using MSVC too).&lt;/p&gt;&lt;p&gt;5. ICL may eliminate useful functions which fills global data in current module, but the filled data is only used in other modules, to disable this, I added printf in such functions, nasty fix...&lt;/p&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2107713.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2011/07/15/2107713.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/len3d/archive/2011/05/25/2056395.html</id><title type="text">Number Prefixes in Mathematics</title><summary type="text">Number Greek Latin ------ ----- ----- 1 mono- uni- 2 duo-/di- duo-/bi- 3 tri- tri- 4 tetra- quad- 5 penta- quint- 6 hex- sex- 7 hept- sept- 8 oct- oct- 9 ennea- non- 10 dec- dec- 20 icosa- vigint- 30 triaconta- trigint- 40 tetraconta- quadragint- 50 pentaconta- quinquagint- 60 hexaconta- sexagint- .</summary><published>2011-05-25T03:02:00Z</published><updated>2011-05-25T03:02:00Z</updated><author><name>Len3d</name><uri>http://www.cnblogs.com/len3d/</uri></author><link rel="alternate" href="http://www.cnblogs.com/len3d/archive/2011/05/25/2056395.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/len3d/archive/2011/05/25/2056395.html"/><content type="html">&amp;nbsp;&amp;nbsp;&amp;nbsp; Number&amp;nbsp;&amp;nbsp; Greek&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ------&amp;nbsp;&amp;nbsp; -----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -----&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mono-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uni-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; duo-/di-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; duo-/bi-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tri-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tri-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tetra-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quad-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; penta-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; quint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hex-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sex-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hept-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sept-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oct-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oct-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ennea-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; non-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dec-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; icosa-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vigint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; triaconta-&amp;nbsp;&amp;nbsp; trigint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 40&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tetraconta-&amp;nbsp; quadragint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pentaconta-&amp;nbsp; quinquagint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hexaconta-&amp;nbsp;&amp;nbsp; sexagint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 70&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; heptaconta-&amp;nbsp; septuagint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; octaconta-&amp;nbsp;&amp;nbsp; octogint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enneaconta-&amp;nbsp; nonagint-&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hect&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cent-&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/len3d/aggbug/2056395.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/len3d/archive/2011/05/25/2056395.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
