﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-puyd</title><link>http://www.cppblog.com/puyd/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 07:17:16 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 07:17:16 GMT</pubDate><ttl>60</ttl><item><title>学习成果--机器人行走动画</title><link>http://www.cppblog.com/puyd/archive/2008/12/28/70567.html</link><dc:creator>puyd</dc:creator><author>puyd</author><pubDate>Sun, 28 Dec 2008 08:47:00 GMT</pubDate><guid>http://www.cppblog.com/puyd/archive/2008/12/28/70567.html</guid><wfw:comment>http://www.cppblog.com/puyd/comments/70567.html</wfw:comment><comments>http://www.cppblog.com/puyd/archive/2008/12/28/70567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/puyd/comments/commentRss/70567.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/puyd/services/trackbacks/70567.html</trackback:ping><description><![CDATA[<p>这几天用3DMAX搞了一个粗糙的机器人行走的模型。学习了一下基本的建模和动画手段。感觉还是很有趣的。下一步准备学习UV贴图的设计。<br></p>
<p><img height=240 alt="" src="http://www.cppblog.com/images/cppblog_com/puyd/MechWalk.gif" width=320 border=0></p>
<img src ="http://www.cppblog.com/puyd/aggbug/70567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/puyd/" target="_blank">puyd</a> 2008-12-28 16:47 <a href="http://www.cppblog.com/puyd/archive/2008/12/28/70567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Panda Directx Exporter</title><link>http://www.cppblog.com/puyd/archive/2008/12/24/70266.html</link><dc:creator>puyd</dc:creator><author>puyd</author><pubDate>Wed, 24 Dec 2008 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/puyd/archive/2008/12/24/70266.html</guid><wfw:comment>http://www.cppblog.com/puyd/comments/70266.html</wfw:comment><comments>http://www.cppblog.com/puyd/archive/2008/12/24/70266.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/puyd/comments/commentRss/70266.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/puyd/services/trackbacks/70266.html</trackback:ping><description><![CDATA[<p><font color=#002c99><a href="http://www.andytather.co.uk/Panda/directxmax_downloads.aspx">http://www.andytather.co.uk/Panda/directxmax_downloads.aspx</a></font></p>
<img src ="http://www.cppblog.com/puyd/aggbug/70266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/puyd/" target="_blank">puyd</a> 2008-12-24 20:12 <a href="http://www.cppblog.com/puyd/archive/2008/12/24/70266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>D3DXVec3TransformNormal() 与 3DXVec3TransformCoord() 的区别</title><link>http://www.cppblog.com/puyd/archive/2008/12/10/69105.html</link><dc:creator>puyd</dc:creator><author>puyd</author><pubDate>Wed, 10 Dec 2008 13:23:00 GMT</pubDate><guid>http://www.cppblog.com/puyd/archive/2008/12/10/69105.html</guid><wfw:comment>http://www.cppblog.com/puyd/comments/69105.html</wfw:comment><comments>http://www.cppblog.com/puyd/archive/2008/12/10/69105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/puyd/comments/commentRss/69105.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/puyd/services/trackbacks/69105.html</trackback:ping><description><![CDATA[<p dir=ltr style="MARGIN-RIGHT: 0px">DirectX中有两个很相似的函数，输入与输出的参数格式完全一样，都是输入一个三维向量（D3DXVECTOR3）和一个矩阵（D3DXMATRIX），输出变换之后的向量（D3DXVECTOR3）。<br><br>函数内部的工作机制也很类似，都是把三维向量扩充成四维向量，然后和矩阵相乘，得到变换之后的四维向量，再把四维向量转换成三维向量输出。<br><br>两者的区别在于开始把三维向量转换成四维向量时，第四维分量的取值。D3DXVec3TransformNormal( ) 用于矢量的变换，第四维分量为0。D3DXVec3TransformCoord( )&nbsp; 用于坐标的变换，第四维分量为1。<br><br>为什么要有这样的区别呢？<br><br>在三维坐标系中，虽然矢量和坐标都用(x,y,z)表示，但是坐标仅表示点在坐标系中的位置，没有方向和长度。三维变换中，坐标点可以平移。由于我们使用向量与矩阵的乘法来计算三维变换，而变换矩阵是4x4的矩阵，只能和四维行向量相乘，因此需要扩充第四维分量来实现三维变换的乘法计算，把第四维分量设置成1，可以保证平移变换的实现。<br><br>矢量表示的是一段有方向和长度的有向线段，两个坐标点之间的矢量可以用终点坐标减起点坐标来计算。在三维的表示方法中，两个三维向量相减，结果还是三维向量，即（Ax,Ay,Az）-（Bx,By,Bz）=（X,Y,Z）。如果扩充到四维表示，把坐标点的第四维分量设置成1，那么用减法计算矢量时，得到的四维向量的前三维分量和三维计算一致，但第四维等于0，即（Ax,Ay,Az,1）-（Bx,By,Bz,1）=（X,Y,Z,0）。矢量（x,y,z）一般表示成从原点（0,0,0）到坐标点（x,y,z）的有向线段，但是它可以任意的坐标点作为起点或终点，只要方向和长度保持一致。因此矢量没有特定的位置。四维表示时，由于第四维等于0，因此，矢量也就不可以实现平移变换。当然，没有位置本来也就不需要平移了。<br><br>所以，通过第四维的0，忽略平移变换，是矢量变换与坐标变换的根本区别。<br><br>但是矢量变换与坐标变换还是有关系的。可以验证一下，在对矢量进行三维变换时，可以先假设一个矢量的起点为原点（0,0,0），终点是（x,y,z），变换时先使用D3DXVec3TransformCoord( )&nbsp;变换起点，再使用D3DXVec3TransformCoord( )&nbsp;变换终点，然后再把变换后的终点与起点相减得到转换后的矢量值，这个减法一方面是计算矢量的值，另一方面也相当于忽略了平移变换，因为原点只会发生平移变换。因此，矢量变换的结果与原矢量终点坐标（x,y,z）变换之后的值是完全不一样的。<br><br>该结果与直接使用D3DXVec3TransformNormal( )一致。<br><br>代码片断：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">D3DXVECTOR3&nbsp;O(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">原点坐标</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">D3DXVECTOR3&nbsp;S(x,y,z);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">矢量坐标</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">D3DXMATRIX&nbsp;M;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_79_101_Open_Image onclick="this.style.display='none'; Codehighlighter1_79_101_Open_Text.style.display='none'; Codehighlighter1_79_101_Closed_Image.style.display='inline'; Codehighlighter1_79_101_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_79_101_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_101_Closed_Text.style.display='none'; Codehighlighter1_79_101_Open_Image.style.display='inline'; Codehighlighter1_79_101_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_79_101_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_79_101_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif">设置变换矩阵M<img src="http://www.cppblog.com/Images/dot.gif"><img src="http://www.cppblog.com/Images/dot.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">变换矢量终点坐标</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">D3DXVec3TransformCoord(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">S,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">S,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">M);&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">变换矢量起点坐标</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">D3DXVec3TransformCoord(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">O,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">O,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">M);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">计算变换后的矢量</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">S</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">S</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">O;</span></div>
<p dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;<br><br></p>
<img src ="http://www.cppblog.com/puyd/aggbug/69105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/puyd/" target="_blank">puyd</a> 2008-12-10 21:23 <a href="http://www.cppblog.com/puyd/archive/2008/12/10/69105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RenderMonkey</title><link>http://www.cppblog.com/puyd/archive/2008/12/10/69096.html</link><dc:creator>puyd</dc:creator><author>puyd</author><pubDate>Wed, 10 Dec 2008 11:53:00 GMT</pubDate><guid>http://www.cppblog.com/puyd/archive/2008/12/10/69096.html</guid><wfw:comment>http://www.cppblog.com/puyd/comments/69096.html</wfw:comment><comments>http://www.cppblog.com/puyd/archive/2008/12/10/69096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/puyd/comments/commentRss/69096.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/puyd/services/trackbacks/69096.html</trackback:ping><description><![CDATA[RenderMonkey <a href="http://developer.amd.com/gpu/rendermonkey/Pages/default.aspx">http://developer.amd.com/gpu/rendermonkey/Pages/default.aspx</a> 
<img src ="http://www.cppblog.com/puyd/aggbug/69096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/puyd/" target="_blank">puyd</a> 2008-12-10 19:53 <a href="http://www.cppblog.com/puyd/archive/2008/12/10/69096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NVIDIA Developer Tools &amp; SDKs</title><link>http://www.cppblog.com/puyd/archive/2008/12/10/69095.html</link><dc:creator>puyd</dc:creator><author>puyd</author><pubDate>Wed, 10 Dec 2008 11:46:00 GMT</pubDate><guid>http://www.cppblog.com/puyd/archive/2008/12/10/69095.html</guid><wfw:comment>http://www.cppblog.com/puyd/comments/69095.html</wfw:comment><comments>http://www.cppblog.com/puyd/archive/2008/12/10/69095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/puyd/comments/commentRss/69095.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/puyd/services/trackbacks/69095.html</trackback:ping><description><![CDATA[NVIDIA Developer Tools &amp; SDKs <a href="http://developer.nvidia.com/page/tools.html">http://developer.nvidia.com/page/tools.html</a><br><br>FX Composer 2.5 <a href="http://developer.nvidia.com/object/fx_composer_home.html">http://developer.nvidia.com/object/fx_composer_home.html</a> <br><br>NVIDIA Shader Debugger <a href="http://developer.nvidia.com/object/nv_shader_debugger_home.html">http://developer.nvidia.com/object/nv_shader_debugger_home.html</a> 
<img src ="http://www.cppblog.com/puyd/aggbug/69095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/puyd/" target="_blank">puyd</a> 2008-12-10 19:46 <a href="http://www.cppblog.com/puyd/archive/2008/12/10/69095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>