﻿<?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++博客-AstaTus-随笔分类-3D Math</title><link>http://www.cppblog.com/AstaTus/category/9491.html</link><description>       -- 夏天不热。。</description><language>zh-cn</language><lastBuildDate>Wed, 25 Feb 2009 18:06:20 GMT</lastBuildDate><pubDate>Wed, 25 Feb 2009 18:06:20 GMT</pubDate><ttl>60</ttl><item><title>点相对与平面的位置判断的证明~</title><link>http://www.cppblog.com/AstaTus/archive/2009/02/25/74915.html</link><dc:creator>AstaTus</dc:creator><author>AstaTus</author><pubDate>Wed, 25 Feb 2009 13:01:00 GMT</pubDate><guid>http://www.cppblog.com/AstaTus/archive/2009/02/25/74915.html</guid><wfw:comment>http://www.cppblog.com/AstaTus/comments/74915.html</wfw:comment><comments>http://www.cppblog.com/AstaTus/archive/2009/02/25/74915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AstaTus/comments/commentRss/74915.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AstaTus/services/trackbacks/74915.html</trackback:ping><description><![CDATA[问题背景：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;很早就觉得数学很重要，但斌没有静下心来好好看~ 最近重写都D3D框架的结构，打算从基础类一个个写起。。<br>&nbsp;&nbsp;&nbsp;今天写到射线的相交，在射线与平面相交的判断上，由于射线的的单方向性，所以可能存在射线的反向延长线和平<br>&nbsp;&nbsp;&nbsp;面相交，但是正真的射线没&nbsp;&nbsp;有&nbsp;&nbsp;和平面相交，所以设：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;平面的单位法向量:N,；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;射线的起始点：Origin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;射线的方向：Dir<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果Dir，N的点积为正 且Origin在平面的背面，或Origin在平面的正面，且Dir，N的点积为负，则他们相交<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其他情况则不想交<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但关键是Origin在平面的哪一面该怎么算呢？下面来小证一下<br><br>证明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N,Origin,Dir均为矢量，其他为标量<br>&nbsp;&nbsp;平面方程为 N(x, y, z) = D；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;射线方程为 P(t) = Origin + Dir*t;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N为平面的单位法向量，&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;求N与Origin的点积<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N&#8226;Origin = |N| * |Origin|cos<span style="FONT-FAMILY: symbol">F</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为N为单位向量 则求出来的值为Origin向量在N上的投影且有方向<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(这个有向长度相于当该平面经过原点时的有向长度，既D为0时),(D的几何意义是平面到原点的有向距离，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;既D为负则 原点在平面背面，反之在反面)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以N&#8226;Origin&nbsp;+ D为最后Origin在正真的有偏移的N上的投影的有向长度，为负则在背<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面，为正则在正面<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 貌似讲的不怎么清楚 -_- ~~~ <span style="FONT-FAMILY: symbol"><br></span>
<img src ="http://www.cppblog.com/AstaTus/aggbug/74915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AstaTus/" target="_blank">AstaTus</a> 2009-02-25 21:01 <a href="http://www.cppblog.com/AstaTus/archive/2009/02/25/74915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>