﻿<?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++博客-misschuer-随笔分类-mathematics</title><link>http://www.cppblog.com/misschuer/category/21343.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 06 Dec 2017 06:14:13 GMT</lastBuildDate><pubDate>Wed, 06 Dec 2017 06:14:13 GMT</pubDate><ttl>60</ttl><item><title>法线的逆转置矩阵推倒(转)</title><link>http://www.cppblog.com/misschuer/archive/2017/12/06/215394.html</link><dc:creator>此最相思</dc:creator><author>此最相思</author><pubDate>Wed, 06 Dec 2017 03:39:00 GMT</pubDate><guid>http://www.cppblog.com/misschuer/archive/2017/12/06/215394.html</guid><wfw:comment>http://www.cppblog.com/misschuer/comments/215394.html</wfw:comment><comments>http://www.cppblog.com/misschuer/archive/2017/12/06/215394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/misschuer/comments/commentRss/215394.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/misschuer/services/trackbacks/215394.html</trackback:ping><description><![CDATA[<h2>Transforming Planes</h2><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;">If we have a plane vector&nbsp;<strong style="box-sizing: border-box;">n</strong>&nbsp;= [a, b, c, d] which describes a plane then for any point&nbsp;<strong style="box-sizing: border-box;">p</strong>&nbsp;= [x, y, z, 1] in that plane the follow equation holds:</p><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;"><strong style="box-sizing: border-box;">n</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">p</strong>&nbsp;= ax + by + cz + d = 0</p><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;">If for a point&nbsp;<strong style="box-sizing: border-box;">p</strong>&nbsp;on the plane, we apply an invertible transformation&nbsp;<strong style="box-sizing: border-box;">R</strong>&nbsp;to get the transformed point&nbsp;<strong style="box-sizing: border-box;">p<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>, then the plane vector&nbsp;<strong style="box-sizing: border-box;">n<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>&nbsp;of the transformed plane is given by applying a corresponding transformation&nbsp;<strong style="box-sizing: border-box;">Q</strong>&nbsp;to the original plane vector&nbsp;<strong style="box-sizing: border-box;">n</strong>&nbsp;where&nbsp;<strong style="box-sizing: border-box;">Q</strong>&nbsp;is unknown.</p><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;"><strong style="box-sizing: border-box;">p<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>&nbsp;=&nbsp;<strong style="box-sizing: border-box;">R&nbsp;p&nbsp;<br style="box-sizing: border-box;" />n<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>&nbsp;=&nbsp;<strong style="box-sizing: border-box;">Q&nbsp;n</strong>&nbsp;<br style="box-sizing: border-box;" /></p><span style="color: #454545; font-family: Arial; background-color: #ffffff;">We can solve for&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">Q</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;by using the resulting plane equation:&nbsp;</span><br style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;" /><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;"><strong style="box-sizing: border-box;">n<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">p<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>&nbsp;= 0&nbsp;<br style="box-sizing: border-box;" /></p><span style="color: #454545; font-family: Arial; background-color: #ffffff;">Begin by substituting for&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">n<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;and&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">p<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">:&nbsp;</span><br style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;" /><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;">(<strong style="box-sizing: border-box;">Q&nbsp;n</strong>)<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;(<strong style="box-sizing: border-box;">R&nbsp;p</strong>) = 0&nbsp;<br style="box-sizing: border-box;" /><strong style="box-sizing: border-box;">n</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">Q</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">R&nbsp;p</strong>&nbsp;= 0&nbsp;<br style="box-sizing: border-box;" /></p><span style="color: #454545; font-family: Arial; background-color: #ffffff;">If&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">Q</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; color: #454545; font-family: Arial; background-color: #ffffff;">t</span>&nbsp;<strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">R</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;=&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">I</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;then&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">n</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; color: #454545; font-family: Arial; background-color: #ffffff;">t</span>&nbsp;<strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">Q</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; color: #454545; font-family: Arial; background-color: #ffffff;">t</span>&nbsp;<strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">R&nbsp;p</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;=&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">n</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; color: #454545; font-family: Arial; background-color: #ffffff;">t</span>&nbsp;<strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">I&nbsp;p</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;=&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">n</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; color: #454545; font-family: Arial; background-color: #ffffff;">t</span>&nbsp;<strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">p</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;= 0 which is given.</span><br style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;" /><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;"><strong style="box-sizing: border-box;">Q</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">R</strong>&nbsp;=&nbsp;<strong style="box-sizing: border-box;">I&nbsp;<br style="box-sizing: border-box;" />Q</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;=&nbsp;<strong style="box-sizing: border-box;">R</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">-1</span>&nbsp;<br style="box-sizing: border-box;" /><strong style="box-sizing: border-box;">Q</strong>&nbsp;= (<strong style="box-sizing: border-box;">R</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">-1</span>)<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<br style="box-sizing: border-box;" /></p><span style="color: #454545; font-family: Arial; background-color: #ffffff;">Substituting&nbsp;</span><strong style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;">Q</strong><span style="color: #454545; font-family: Arial; background-color: #ffffff;">&nbsp;back into our plane vector transformation equation we get:&nbsp;</span><br style="box-sizing: border-box; color: #454545; font-family: Arial; background-color: #ffffff;" /><p style="box-sizing: border-box; margin: 0px 0px 14px; padding: 0px; word-wrap: break-word; word-break: normal; color: #454545; font-family: Arial; background-color: #ffffff;"><strong style="box-sizing: border-box;">n<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; bottom: -0.25em;">1</span></strong>&nbsp;=&nbsp;<strong style="box-sizing: border-box;">Q&nbsp;n</strong>&nbsp;= (<strong style="box-sizing: border-box;">R</strong><span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">-1</span>)<span style="box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em;">t</span>&nbsp;<strong style="box-sizing: border-box;">n</strong></p><img src ="http://www.cppblog.com/misschuer/aggbug/215394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/misschuer/" target="_blank">此最相思</a> 2017-12-06 11:39 <a href="http://www.cppblog.com/misschuer/archive/2017/12/06/215394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三维旋转(转载)</title><link>http://www.cppblog.com/misschuer/archive/2017/12/04/215389.html</link><dc:creator>此最相思</dc:creator><author>此最相思</author><pubDate>Mon, 04 Dec 2017 07:50:00 GMT</pubDate><guid>http://www.cppblog.com/misschuer/archive/2017/12/04/215389.html</guid><wfw:comment>http://www.cppblog.com/misschuer/comments/215389.html</wfw:comment><comments>http://www.cppblog.com/misschuer/archive/2017/12/04/215389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/misschuer/comments/commentRss/215389.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/misschuer/services/trackbacks/215389.html</trackback:ping><description><![CDATA[<div>http://blog.csdn.net/csxiaoshui/article/details/65446125</div><img src ="http://www.cppblog.com/misschuer/aggbug/215389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/misschuer/" target="_blank">此最相思</a> 2017-12-04 15:50 <a href="http://www.cppblog.com/misschuer/archive/2017/12/04/215389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>齐次坐标的理解(转载别人的)</title><link>http://www.cppblog.com/misschuer/archive/2017/12/04/215387.html</link><dc:creator>此最相思</dc:creator><author>此最相思</author><pubDate>Mon, 04 Dec 2017 06:34:00 GMT</pubDate><guid>http://www.cppblog.com/misschuer/archive/2017/12/04/215387.html</guid><wfw:comment>http://www.cppblog.com/misschuer/comments/215387.html</wfw:comment><comments>http://www.cppblog.com/misschuer/archive/2017/12/04/215387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/misschuer/comments/commentRss/215387.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/misschuer/services/trackbacks/215387.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px; background-color: #f6e497;">来源&nbsp;<span style="font-family: verdana, &quot;courier new&quot;; font-size: 14px; line-height: 21px;">https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html</span></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px; background-color: #f6e497;"><br />&nbsp;一直对齐次坐标这个概念的理解不够彻底，只见大部分的书中说道&#8220;齐次坐标在仿射变换中非常的方便&#8221;，然后就没有了后文，今天在一个叫做&#8220;三百年 重生&#8221;的博客上看到一篇关于透视投影变换的探讨的文章，其中有对齐次坐标有非常精辟的说明，特别是针对这样一句话进行了有力的证明：<em style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&#8220;齐次坐标表示是计算机图形学的重要手段之一，它既能够用来明确区分向量和点，同时也更易用于进行仿射（线性）几何变换。&#8221;&#8212;&#8212;</span>&nbsp;</em>F.S. Hill, JR。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px; background-color: #f6e497;">&nbsp;&nbsp;&nbsp;&nbsp; 由于作者对齐次坐标真的解释的不错，我就原封不动的摘抄过来：</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19.5px; background-color: #f6e497;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="margin: 0px; padding: 0px; font-family: &quot;Times New Roman&quot;;">&nbsp;对于一个</span><em style="margin: 0px; padding: 0px; font-family: &quot;Times New Roman&quot;;">向量</em><strong style="margin: 0px; padding: 0px; font-family: &quot;Times New Roman&quot;;"><span style="margin: 0px; padding: 0px;">v</span></strong><span style="margin: 0px; padding: 0px; font-family: &quot;Times New Roman&quot;;">以及基</span><strong style="margin: 0px; padding: 0px; font-family: &quot;Times New Roman&quot;;"><span style="margin: 0px; padding: 0px;">oabc</span></strong>，<span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: &quot;Times New Roman&quot;;">可以找到一组坐标</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(v1,v2,v3)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: &quot;Times New Roman&quot;;">，使得</span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">v</span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt;">&nbsp;= v1&nbsp;</span><span style="margin: 0px; padding: 0px; font-size: 12pt;"><strong style="margin: 0px; padding: 0px;">a</strong>&nbsp;+ v2&nbsp;<strong style="margin: 0px; padding: 0px; font-size: 10pt;">b +&nbsp;</strong></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">v3</span><span style="margin: 0px; padding: 0px; font-size: 12pt;"><strong style="margin: 0px; padding: 0px;">&nbsp;c</strong></span><span style="margin: 0px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</strong></span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">（</span><span style="margin: 0px; padding: 0px;">1</span></strong><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">）</span></strong></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; background-color: #f6e497;"><strong style="margin: 0px; padding: 0px;">&nbsp;</strong><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">而对于一个</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;"><em style="margin: 0px; padding: 0px;">点</em></span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">p</span></span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">，则可以找到一组坐标（</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">p1,p2,p3</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">），使得</span>&nbsp;<strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">p</span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt;">&nbsp;&#8211;&nbsp;</span><span style="margin: 0px; padding: 0px; font-size: 12pt;"><strong style="margin: 0px; padding: 0px;">o</strong>&nbsp;= p1&nbsp;<strong style="margin: 0px; padding: 0px; font-size: 12pt;">a +&nbsp;</strong>p2&nbsp;<strong style="margin: 0px; padding: 0px;">b</strong>&nbsp;+ p3&nbsp;<strong style="margin: 0px; padding: 0px;">c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong></span><span style="margin: 0px; padding: 0px; font-family: 宋体;"><strong style="margin: 0px; padding: 0px;">（</strong></span><strong style="margin: 0px; padding: 0px;">2），</strong></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; background-color: #f6e497;"><strong style="margin: 0px; padding: 0px;"></strong>&nbsp;</p><p style=" padding: 0px; font-size: 13px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">从上面对</span><em style="margin: 0px; padding: 0px; font-size: 12pt;">向量</em><span style="margin: 0px; padding: 0px; font-size: 12pt;">和</span><em style="margin: 0px; padding: 0px; font-size: 12pt;">点</em><span style="margin: 0px; padding: 0px; font-size: 12pt;">的表达，我们可以看出为了在坐标系中表示一个</span><em style="margin: 0px; padding: 0px; font-size: 12pt;">点</em><span style="margin: 0px; padding: 0px; font-size: 12pt;">（如</span>p<span style="margin: 0px; padding: 0px; font-size: 12pt;">），我们把点的位置看作是对这个基的原点</span>o<span style="margin: 0px; padding: 0px; font-size: 12pt;">所进行的一个位移，即一个向量&#8212;&#8212;</span>p &#8211; o<span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">（有的书中把这样的向量叫做<em style="margin: 0px; padding: 0px;">位置向量</em>&#8212;&#8212;起始于坐标原点的特殊向量），我们在表达这个向量的同时用等价的方式表达出了点</span>p：<strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;">p&nbsp;</span></strong><span style="margin: 0px; padding: 0px;">=&nbsp;<strong style="margin: 0px; padding: 0px;">o</strong>&nbsp;+ p1&nbsp;<strong style="margin: 0px; padding: 0px;">a +&nbsp;</strong>p2&nbsp;<strong style="margin: 0px; padding: 0px;">b</strong>&nbsp;+ p3&nbsp;<strong style="margin: 0px; padding: 0px;">c (3)</strong></span></p><p style=" padding: 0px; font-size: 13px;">&nbsp;</p><p style=" padding: 0px; font-size: 13px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1)(3)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">是坐标系下表达一个</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;"><em style="margin: 0px; padding: 0px;">向量</em>和<em style="margin: 0px; padding: 0px;">点</em>的不同表达方式。这里可以看出，虽然都是用代数分量的形式表达向量和点，但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1, 4, 7)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">，谁知道它是个向量还是个点！</span></p><p style=" padding: 0px; font-size: 13px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="margin: 0px; padding: 0px; font-size: 12pt;">我们现在把（</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">1</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">）（</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">3</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">）写成矩阵的形式：<span style="margin: 0px; padding: 0px; font-size: 12pt; color: red;">v = (v1 v2 v3 0)&nbsp;X&nbsp;(a b c o)</span></span></span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; color: red;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">p = (p1 p2 p3 1) X (a b c o),</span></span></span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">这里</span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(a,b,c,o)</span></span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt;">是坐标基矩阵，右边的列向量分别是向量</span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">v</span></span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt;">和点</span><strong style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">p</span></span></strong><span style="margin: 0px; padding: 0px; font-size: 12pt;">在基下的坐标。</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">这样，向量和点在同一个基下就有了不同的表达：<em style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">3D</span></span></em><em style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">向量</span></em><span style="margin: 0px; padding: 0px; font-size: 12pt;">的第</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">4</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">个代数分量是</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">0</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">，而</span><em style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">3D</span></span></em><em style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">点</span></em><span style="margin: 0px; padding: 0px; font-size: 12pt;">的第</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">4</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">个代数分量是</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">1</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">。像这种这种用</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">4</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">个代数分量表示</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">3D</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">几何概念的方式是一种齐次坐标表示。</span></span></span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;">&nbsp;</p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">这样，上面的</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1, 4, 7)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">如果写成（</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">1,4,7,0</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">），它就是个向量；如果是</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1,4,7,1)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">，它就是个点。</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">下面是如何在普通坐标</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(Ordinary Coordinate)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">和齐次坐标</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(Homogeneous Coordinate)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">之间进行转换：</span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1)</span><span style="margin: 0px; padding: 0px; font-size: 12pt; color: red;">从普通坐标转换成齐次坐标时</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&nbsp;&nbsp;&nbsp;</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">如果</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">是个点，则变为</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z,1);</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&nbsp;&nbsp;&nbsp;</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">如果</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">是个向量，则变为</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z,0)</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(2)<span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px; color: red;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">从齐次坐标转换成普通坐标时</span></span></span></span></span></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&nbsp;&nbsp;&nbsp;</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&nbsp;&nbsp;&nbsp;<span style="margin: 0px; padding: 0px; font-size: 12pt;">如果是</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z,1)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">，则知道它是个点，变成</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z);</span></span></span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;">&nbsp;&nbsp;&nbsp;</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">如果是</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z,0)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">，则知道它是个向量，仍然变成</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(x,y,z)</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;">&nbsp;</p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">以上是通过齐次坐标来区分向量和点的方式。从中可以思考得知，对于平移</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">T</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">、旋转</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">R</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">、缩放</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">S</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">这</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">3</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">个最常见的仿射变换，平移变换只对于点才有意义，因为普通向量没有位置概念，只有大小和方向.</span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;">&nbsp;</p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">而旋转和缩放对于向量和点都有意义，你可以用类似上面齐次表示来检测。从中可以看出，齐次坐标用于仿射变换非常方便。</span></span></span></span></p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; background-color: #f6e497;">&nbsp;</p><p style=" padding: 0px; font-size: 13px; line-height: 19.5px; font-family: 微软雅黑, verdana, &quot;ms song&quot;, 宋体, Arial, Helvetica, sans-serif; background-color: #f6e497;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-family: 宋体;"><span style="margin: 0px; padding: 0px; color: red;"><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">此外，对于一个普通坐标的</span><span style="margin: 0px; padding: 0px; font-size: 12pt;"><em style="margin: 0px; padding: 0px;">点</em></span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">P=(Px, Py, Pz)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">，有对应的一族齐次坐标</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(wPx, wPy, wPz, w)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">，其中</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">w</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt;">不等于零</span></span></span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">。比如，</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">P(1, 4, 7)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">的齐次坐</span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">标有</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">(1, 4, 7, 1)</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; font-family: 宋体;">、（</span><span style="margin: 0px; padding: 0px;"><span style="margin: 0px; padding: 0px; font-size: 12pt;">2, 8, 14, 2</span></span><span style="margin: 0px; padding: 0px; font-size: 12pt; f