<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wut I am &#187; 图形图像</title>
	<atom:link href="http://wutiam.net/tag/graphics/feed/" rel="self" type="application/rss+xml" />
	<link>http://wutiam.net</link>
	<description>I&#039;m islet8, I&#039;m what I am</description>
	<lastBuildDate>Wed, 25 Jan 2012 14:11:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PBRT 学习：安装编译</title>
		<link>http://wutiam.net/2009/09/pbrt-study-install-and-build/</link>
		<comments>http://wutiam.net/2009/09/pbrt-study-install-and-build/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 06:32:48 +0000</pubDate>
		<dc:creator>islet8</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[图形图像]]></category>

		<guid isPermaLink="false">http://wutiam.net/?p=116</guid>
		<description><![CDATA[去年在前公司看着 leader 用 PBRT 做基于 DX11/SM5.0 的 ray tracing 实验时，还懵懂得云里雾里。而我现在的 manager，在读研的时候就已经在研究 PBRT 了。我， out 了！最近由于工作的原因，终于开始着手学习 PBRT，而这玩意第一道关卡就是安装编译中的一堆问题，记录以备不时只需。 网上关于 PBRT 的资料基本都是 1.03 或更早的，而且基本都跳过了自动生成代码的预处理阶段。这次下载来的最新 pbrt-src-1.04.zip for Windows 虽然在其 release note 里说“a number of bugs and incompatabilities have been fixed”，但从我安装编译的经过来看，问题似乎更多了（斯坦福的大大们不应该这么粗心吧）。 首先把下载的文件解压到任意目录下，我这是“D:\Program Files\pbrt-1.04”，不过推荐还是放到分区根目录或者文件夹名不含空格的路径下，否则后面会多几个体力活。 PBRT 使用了 Bison 和 Flex 这两个工具来生成用于解析 pbrt 脚本文件的代码文件（这话有点绕哈），而这两个工具本是 Linux 下的，现在都有大大做了 Windows 版的移植（Bison for Windows，Flex for Windows）。分别把 Bison [...]
Related posts:<ul>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
<li><a href='http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/' rel='bookmark' title='判断一个点是否在 2D 三角形内'>判断一个点是否在 2D 三角形内</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>去年在前公司看着 leader 用 <a title="Physically Based Rendering" href="http://www.pbrt.org/">PBRT</a> 做基于 DX11/SM5.0 的 <a title="光线跟踪 - Wikipedia" href="http://zh.wikipedia.org/zh-cn/%E5%85%89%E7%BA%BF%E8%B7%9F%E8%B8%AA">ray tracing</a> 实验时，还懵懂得云里雾里。而我现在的 manager，在读研的时候就已经在研究 PBRT 了。我， out 了！最近由于工作的原因，终于开始着手学习 PBRT，而这玩意第一道关卡就是安装编译中的一堆问题，记录以备不时只需。</p>
<p>网上关于 PBRT 的资料基本都是 1.03 或更早的，而且基本都跳过了自动生成代码的预处理阶段。这次下载来的最新 <a href="http://www.pbrt.org/src/pbrt-src-1.04.zip">pbrt-src-1.04.zip for Windows</a> 虽然在其 release note 里说“a number of bugs and incompatabilities have been fixed”，但从我安装编译的经过来看，问题似乎更多了（斯坦福的大大们不应该这么粗心吧）。</p>
<p>首先把下载的文件解压到任意目录下，我这是“D:\Program Files\pbrt-1.04”，不过<strong>推荐还是放到分区根目录或者文件夹名不含空格的路径下</strong>，否则后面会多几个体力活。</p>
<p>PBRT 使用了 Bison 和 Flex 这两个工具来生成用于解析 pbrt 脚本文件的代码文件（这话有点绕哈），而这两个工具本是 Linux 下的，现在都有大大做了 Windows 版的移植（<a href="http://gnuwin32.sourceforge.net/packages/bison.htm">Bison for Windows</a>，<a href="http://gnuwin32.sourceforge.net/packages/flex.htm">Flex for Windows</a>）。分别把 Bison Binaries 中的 \bin 和 \share、Bison Dependencies 中的 \bin、Flex Binaries 中的 \bin 目录解压到任意目录下，我这是“D:\GnuWin32”。</p>
<p>这时 PBRT 还是不能编译的，原因是 1.04 中移除了对 <a href="http://www.openexr.com/">OpenEXR</a> 工具包的包含。OpenEXR 本身是<a title="HDR文件格式简介" href="http://blog.csdn.net/zzzGoogle/archive/2007/05/18/1615691.aspx">三大 HDRI 格式</a>之一，另外两种格式在以前我都处理过，而对 EXR 格式不熟，这里暂时也不做深究。OpenEXR 工具包可以在其<a title="OpenEXR Downloads" href="http://www.openexr.com/downloads.html">官网下载</a>（最新的 1.5.0 没有 VS2005 的预编译版本，我偷懒就直接下 <a href="http://download.savannah.nongnu.org/releases/openexr/openexr-1.4.0-vs2005.zip">openexr-1.4.0-vs2005.zip</a> 了），也可以从 PBRT 1.03 zip 包中直接拿来用，然后整个解压出来，我这是“D:\Program Files\pbrt-1.04\openexr-1.4.0-vs2005”。这还没完，无论是官网还是 PBRT 1.03 里的 OpenEXR 工具包，在 \lib 文件夹下都缺少 zdll.lib 这个文件，去 <a href="http://www.zlib.net/">zlib 首页</a>下载 zlib compiled DLL zipfile，把压缩包中的 \lib 解压到 OpenEXR 所在文件夹下。</p>
<p><span id="more-116"></span>接下来就可以用 VS2005 打开 PBRT 文件夹下的 \win32\pbrt.sln，这时先别急着按 F7，工程属性里还有不少设置需要修改。</p>
<p>先展开 core 工程下的 Parser Files 文件夹，分别打开 pbrtlex.l 和 pbrtparse.y 两个文件的属性对话框，编辑 Custom Build Step | General | Command Line，重新指定 flex 和 bison 程序的位置及参数，我这是：</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">&quot;D:\GnuWin32\bin1\flex.exe&quot; -o&quot;$(InputDir)/$(InputName).cpp&quot; &quot;$(InputPath)&quot;
&nbsp;
&quot;D:\GnuWin32\bin\bison.exe&quot; -d -v -t -o&quot;$(InputDir)/$(InputName).cpp&quot; &quot;$(InputPath)&quot;</pre></div></div>

<p>注意这里所有的路径都被引号包裹了，这是由于我把 PBRT 放在“Program Files”这个文件夹下，如前面所述，本来这些引号可以不需要加的，后面的设置项也有同样问题，不一一注明了。检测这个步骤是否修改正确，可以直接编译这两个奇怪的文件，如果能在 \core 文件夹下生成 pbrtlex.cpp、pbrtparse.cpp 和 pbrtparse.hpp 这三个文件，则 OK 了，否则会有关于“error: A tool returned an error code from "Lexing pbrtlex"”或“error: A tool returned an error code from "Yacc'ing pbrtparse"”的报错。</p>
<p>过了上面这一步，其实离成功距离就不远了。按照<a href="http://www.pbrt.org/faq.php#faqs_build-win32_unistd">官网 FAQ</a> 里的说法，在 \core 文件夹下创建一个空的 unistd.h 文件，而不是注释掉 \core\pbrtlex.cpp 里的“#include ”这行，否则每次编译 pbrtlex.cpp 后还得再改一次，麻烦。还有一个很“粗心”的错，在 core 工程属性里的 Linker | Input | Additional Dependencies，居然漏写了“IlmThread.lib”这个库，加上就好。如果不嫌累，还可以把 Debug 模式下的几个库（Half.lib、Iex.lib、IlmImf.lib、IlmThread.lib、Imath.lib）改为 Half_d.lib、Iex_d.lib、IlmImf_d.lib、IlmThread_d.lib、Imath_d.lib。</p>
<p>如果 build 到最后，在 render 这个工程的 Post-Build Event 中报类似“Copying zlib1.dll to ……”失败的错误，则应该是由于路径包含空格导致其工程属性里 Build Events | Post-Build Event | Command Line 的展开路径没法正确访问引起的错误，加上引号就好了。</p>
<p>Well done! 最后，在系统环境变量里，加一项“PBRT_SEARCHPATH”，值为“D:\Program Files\pbrt-1.04\win32\Projects\Release”，否则 pbrt 程序是跑不起来的。现在，下载一个<a title="PBRT Input File Format" href="http://www.cse.ohio-state.edu/~parent/classes/782/labs/PBRT/pbrtscene.html">测试用的 pbrt 脚本文件</a>，再写个批处理脚本 pbrt.cmd，都放到 PBRT 文件夹下的 \scenes 文件夹下，来测试下 pbrt 程序吧，批处理脚本如下：</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">SET PATH=%PATH%;%PBRT_SEARCHPATH%
&nbsp;
pbrt.exe sharp.pbrt
&quot;..\openexr-1.4.0-vs2005\bin\exrdisplay.exe&quot; sharp.exr</pre></div></div>

<p>P.S. 据说 PBRT 无法在 VS2008+ 下正常工作，未经测试。</p>
<p>Related posts:<ul>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
<li><a href='http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/' rel='bookmark' title='判断一个点是否在 2D 三角形内'>判断一个点是否在 2D 三角形内</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://wutiam.net/2009/09/pbrt-study-install-and-build/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>3D Coordinates</title>
		<link>http://wutiam.net/2009/04/3d-coordinates/</link>
		<comments>http://wutiam.net/2009/04/3d-coordinates/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 03:46:08 +0000</pubDate>
		<dc:creator>islet8</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[图形图像]]></category>
		<category><![CDATA[游戏开发]]></category>

		<guid isPermaLink="false">http://wutiam.net/?p=78</guid>
		<description><![CDATA[最近碰到 Gamebryo 到 3DS MAX 的坐标系转换问题，顺便花了几分钟研究了下各 3D 坐标系，真是比当下全球形势还混乱： 除了微软当年为了跟 OpenGL 划清界限，特立独行搞出左手坐标系的 DX 外，其他都是右手系（应该都是受 OGL 这个工业标准的影响），不过 Z 轴朝什么方向的都有，哭死了。 Related posts: 游戏引擎设计 之 内存管理框架 WoW Model Viewer 的编译问题 判断一个点是否在 2D 三角形内
Related posts:<ul>
<li><a href='http://wutiam.net/2011/10/game-engine-design-memory-management-framework/' rel='bookmark' title='游戏引擎设计 之 内存管理框架'>游戏引擎设计 之 内存管理框架</a></li>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/' rel='bookmark' title='判断一个点是否在 2D 三角形内'>判断一个点是否在 2D 三角形内</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>最近碰到 <a href="http://www.emergent.net/Products/Gamebryo/">Gamebryo</a> 到 <a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;id=5659302">3DS MAX</a> 的坐标系转换问题，顺便花了几分钟研究了下各 3D 坐标系，真是比当下全球形势还混乱：</p>
<p><img src="http://lh6.ggpht.com/_p7iGbn8Pr24/Sd6-6rlBIEI/AAAAAAAABhU/1vakQ4sveeQ/s800/Coordinates.PNG" alt="" /></p>
<p>除了微软当年为了跟 OpenGL 划清界限，特立独行搞出左手坐标系的 DX 外，其他都是右手系（应该都是受 OGL 这个工业标准的影响），不过 Z 轴朝什么方向的都有，哭死了。</p>
<p>Related posts:<ul>
<li><a href='http://wutiam.net/2011/10/game-engine-design-memory-management-framework/' rel='bookmark' title='游戏引擎设计 之 内存管理框架'>游戏引擎设计 之 内存管理框架</a></li>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/' rel='bookmark' title='判断一个点是否在 2D 三角形内'>判断一个点是否在 2D 三角形内</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://wutiam.net/2009/04/3d-coordinates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WoW Model Viewer 的编译问题</title>
		<link>http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/</link>
		<comments>http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 06:56:41 +0000</pubDate>
		<dc:creator>islet8</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[图形图像]]></category>
		<category><![CDATA[游戏开发]]></category>

		<guid isPermaLink="false">http://wutiam.net/?p=82</guid>
		<description><![CDATA[这段时间要搞角色换装系统的改进，参考魔兽世界的换装系统机制，便先拿了 WoW Model Viewer 的代码来参考。 先拷来一个 0.48b 版本的代码，按照这里说的做后编译是通过了，但运行总报错，跟了一下没找到问题，索性去下了 0.5.08 。该版本使用 wxWidgets 2.8.0、CxImage 5.99c、GLEW 1.3.3，其中 wxWidgets 2.8.0 需要自行下载、编译。 然后打开 wowmodelview.sln，打开工程属性，修改 C++ &#124; Additional Include Directories、Linker &#124; Additional Library Directories 中关于 wxWidgets 的路径，然后编译，这时可能会报一些 build error，基本都是类型没有显式强转的问题，改掉即可。 编译完成后，需要修改配置文件 Config.ini，把 [Locale] 下的“Path=”和“MPQFiles=”后的路径都改为 .mpq 文件所在文件夹根目录，就可以运行了。 看，给这位大老粗穿上粉红色紧身T恤是不是很性感呀？ Related posts: PBRT 学习：安装编译 My first game was born in Oct, 2006 3D Coordinates
Related posts:<ul>
<li><a href='http://wutiam.net/2009/09/pbrt-study-install-and-build/' rel='bookmark' title='PBRT 学习：安装编译'>PBRT 学习：安装编译</a></li>
<li><a href='http://wutiam.net/2006/11/my-first-game-was-born-in-oct-2006/' rel='bookmark' title='My first game was born in Oct, 2006'>My first game was born in Oct, 2006</a></li>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>这段时间要搞角色换装系统的改进，参考魔兽世界的换装系统机制，便先拿了 <a href="http://www.wowmodelviewer.org/" target="_blank">WoW Model Viewer</a> 的代码来参考。</p>
<p>先拷来一个 0.48b 版本的代码，按照<a title="终于完成魔兽世界的换装系统" href="http://www.cnitblog.com/sword/archive/2007/07/18/30169.html" target="_blank">这里</a>说的做后编译是通过了，但运行总报错，跟了一下没找到问题，索性去下了 <a href="http://download.csdn.net/source/695504" target="_blank">0.5.08 </a>。该版本使用 <a href="http://www.wxwidgets.org/" target="_blank">wxWidgets</a> 2.8.0、<a href="http://www.codeproject.com/KB/graphics/cximage.aspx" target="_blank">CxImage</a> 5.99c、GLEW 1.3.3，其中 <a href="http://sourceforge.net/project/showfiles.php?group_id=9863&amp;package_id=58517&amp;release_id=470616" target="_blank">wxWidgets 2.8.0</a> 需要自行下载、编译。</p>
<p>然后打开 wowmodelview.sln，打开工程属性，修改 C++ | Additional Include Directories、Linker | Additional Library Directories 中关于 wxWidgets 的路径，然后编译，这时可能会报一些 build error，基本都是类型没有显式强转的问题，改掉即可。</p>
<p>编译完成后，需要修改配置文件 Config.ini，把 [Locale] 下的“Path=”和“MPQFiles=”后的路径都改为 .mpq 文件所在文件夹根目录，就可以运行了。</p>
<p><a href="http://picasaweb.google.com/lh/photo/ZuTehlMES-Zn-ylVBlfFig?authkey=Gv1sRgCIjugNSUytixKg&amp;feat=embedwebsite" target="_blank"><img src="http://lh3.ggpht.com/_p7iGbn8Pr24/SdMPKBK3D0I/AAAAAAAABg0/wbVJtfMNTIM/s400/WowModelViewer.PNG" alt="" /></a><br />
看，给这位大老粗穿上粉红色紧身T恤是不是很性感呀？</p>
<p>Related posts:<ul>
<li><a href='http://wutiam.net/2009/09/pbrt-study-install-and-build/' rel='bookmark' title='PBRT 学习：安装编译'>PBRT 学习：安装编译</a></li>
<li><a href='http://wutiam.net/2006/11/my-first-game-was-born-in-oct-2006/' rel='bookmark' title='My first game was born in Oct, 2006'>My first game was born in Oct, 2006</a></li>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>判断一个点是否在 2D 三角形内</title>
		<link>http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/</link>
		<comments>http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 03:29:03 +0000</pubDate>
		<dc:creator>islet8</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[图形图像]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://wutiam.net/?p=91</guid>
		<description><![CDATA[这是我拿到公司 offer 时美国老大给我的面试题，对于当时我这种文盲来说，还是杀死了不少脑细胞。最近闲来无事（嗯。。。被危机了），又拿出来琢磨了一下各算法。 设一在在 2D 空间中的三角形 △ABC ，三个顶点向量 A(ax, ay)、B(bx, by)、C(cx, cy)，三条有向边 AB、BC、CA，有一点 P(px, py)。 叉乘法 原理： 沿 △ABC 各有向边按一定方向走（顺时针或逆时针），判断点 P 是否在该边的某侧（右侧或左侧），若点 P 在三条边的同侧，则点 P 在 △ABC 内。 实现： 分别计算向量 AB、BC、CA 与向量 AP、BP、CP 的向量积（叉乘），若三个结果均同号（正或负，为零表示 P 在边上），则可得点 P 在 △ABC 内。其中AB = B - A，AB×AP = AB.x*AP.y - AB.y*AP.x。 该算法只需要做 3 次叉乘（6 次普通数值乘法），效率高，且没有浮点误差。 这是我当时面试想的算法，Azure 等人也用的类似算法。 面积法 原理： [...]
Related posts:<ul>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/09/pbrt-study-install-and-build/' rel='bookmark' title='PBRT 学习：安装编译'>PBRT 学习：安装编译</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>这是我拿到<a title="上班，过年" href="/2008/02/working-and-chinese-new-year/">公司</a> offer 时美国老大给我的面试题，对于当时我这种文盲来说，还是杀死了不少脑细胞。最近闲来无事（嗯。。。被危机了），又拿出来琢磨了一下各算法。</p>
<p>设一在在 2D 空间中的三角形 △ABC ，三个顶点向量 A(ax, ay)、B(bx, by)、C(cx, cy)，三条有向边 AB、BC、CA，有一点 P(px, py)。</p>
<ol>
<li>叉乘法</li>
<p>原理：</p>
<p>沿 △ABC 各<strong>有向边</strong>按一定方向走（顺时针或逆时针），判断点 P 是否在该边的某侧（右侧或左侧），若点 P 在三条边的同侧，则点 P 在 △ABC 内。</p>
<p>实现：</p>
<p>分别计算向量 AB、BC、CA 与向量 AP、BP、CP 的向量积（叉乘），若三个结果均同号（正或负，为零表示 P 在边上），则可得点 P 在 △ABC 内。其中AB = B - A，AB×AP = AB.x*AP.y - AB.y*AP.x。</p>
<p>该算法只需要做 3 次叉乘（6 次普通数值乘法），效率高，且没有浮点误差。<br />
这是我当时面试想的算法，<a title="快速判断点在2D三角形内" href="http://www.azure.com.cn/article.asp?id=235">Azure</a> <a title="叉乘法判断点是否在三角形内" href="http://blog.csdn.net/dracularking/archive/2008/03/25/2217180.aspx">等人</a>也用的类似算法。</p>
<li>面积法</li>
<p>原理：</p>
<p>若点 P 在 △ABC 内，则 △ABP、△BCP、△CAP 的面积之和应等于 △ABC 的面积。</p>
<p>实现：</p>
<p>利用两个向量叉积的几何意义为该两个向量所围三角形面积的 2 倍，分别计算 AB×BP、BC×CP、CA×AP、AB×BC，若 |AB×BP| + |BC×CP| + |CA×AP| = |AB×BC|，则得点 P 在 △ABC 内。</p>
<p>这个算法用得比较普遍，需要做 4 次叉乘（8 次普通数值乘法），效率和叉乘法差不多，同时避免了用海伦公式计算面积的低效和精度问题（数值除法和开方运算）。</ol>
<p>我昨天想的一个算法有点类似<a title="如何判断一点在三角形内" href="http://www.cnblogs.com/cgwolver/archive/2008/07/31/1257611.html">这篇文章</a>中的方法 3，比它简单一点，但同样需要对向量做归一化处理，效率不高，故放弃了。另外的算法还包括划线交点法、解方程组法、<a title="判断一个点在三角形之内" href="http://blog.csdn.net/Akron/archive/2008/07/07/2619496.aspx">复数法</a>等，但计算量都较大，不再赘述。</p>
<p>Related posts:<ul>
<li><a href='http://wutiam.net/2009/04/3d-coordinates/' rel='bookmark' title='3D Coordinates'>3D Coordinates</a></li>
<li><a href='http://wutiam.net/2009/04/problem-of-compiling-wowmodelviewer/' rel='bookmark' title='WoW Model Viewer 的编译问题'>WoW Model Viewer 的编译问题</a></li>
<li><a href='http://wutiam.net/2009/09/pbrt-study-install-and-build/' rel='bookmark' title='PBRT 学习：安装编译'>PBRT 学习：安装编译</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://wutiam.net/2009/02/how-to-decide-whether-a-point-is-inside-a-triangle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

