- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                第7讲 计算几何基础和实例分析
                    计算几何基础和实例分析
矢量
包含关系
凸包
矢量
矢量
矢量
矢量
矢量的运算——叉积的应用(折线段的拐向判断)
对于有公共端点的线段P0P1和P1P2,通过(P2-P0)*(P1-P0)计算所得到的符号即可确定折线段的拐向:
(P2-P0)*(P1-P0)0:P0P1在P1点拐向右侧后得到P1P2
(P2-P0)*(P1-P0)0:P0P1在P1点拐向左侧后得到P1P2
(P2-P0)*(P1-P0)=0:P0、P1和P2三点共线
矢量的运算——叉积的应用(判断点是否在线段上)
设有Q点,线段为P1P2,判断点Q在该线段上的依据是:
(Q-P1)*(P2-P1)=0
Q在以P1,P2为对角顶点的矩形内
设有:Pi、Pj、Pk三点,判断条件描述为:
Min(xi,xj) = xk = Max(xi,xj) and  Min(yi,yj) = yk =Max(yi,yj)
矢量
矢量的运算——叉积的应用(判断两线段是否相交)
通过快速排斥测试和快速跨立测试进行判断
快速排斥测试
设以线段P1P2位对角线的矩形为R,以线段Q1Q2为对角线的矩形为T,如果R和T不相交,则两线段不会相交。
快速跨立测试
若两线段相交,则必然相互跨立对方。
当P1P2跨立Q1Q2时
  (P1-Q1)*(Q2-Q1)*(Q2-Q1)*(P2-Q1)=0  
当Q1Q2跨立P1P2时
  (Q1-P1)*(P2-P1)*(P2-P1)*(Q2-P1)=0  
矢量
应用示例分析
在平面直角坐标系中,任意给出四个点的坐标值,前两组和后两组分别确定两条直线。请判断两条直线的关系:
① 若是同一条线,输出“LINE”
② 若两条直线平行,输出“NONE”
③ 若两条直线相交,输出交点坐标
输入格式:第一行一个数据n表示输入数据的组数,以后n行(每行8个数据)表示两条直线的数据
输出格式:对每组输入给出对应输出
   [提示:]
用两点式推出直线方程
考虑两点式确定的直线不一定有斜率,所以使用直线方程的一般形式:ax+by+c=0
输入样例
3
1 1 2 2 3 3 4 4
1 1 2 2 1 2 2 1
1 1 3 3 2 1 4 3
输出样例
LINE
POINT 1.50 1.50
NONE
END OF OUTPUT
0701
计算几何基础和实例分析
矢量
包含关系
凸包
包含关系
判断图形是否包含在矩形中
判断矩形是否包含点
只需判断该点的坐标是否夹在矩形的上下边和左右边之间
判断线段、折线、多边形是否在矩形中
因为矩形是一个凸集,所以只需判断所有的端点是否都在矩形中即可
判断矩形是否在矩形中
只需比较矩形的左右边界和上下边界即可判断
判断圆是否在矩形中
充要条件:圆心在矩形中,并且圆的半径小于等于圆心到矩形四边距离的最小值
包含关系
判断图形是否包含在多边形中
判断点是否在多边形中
判断点P是否在多边形中的基本思想:以点P为端点,向左方作射线L,L的左端必定在多边形外;考虑沿着L从无穷远处开始从左到右移动,遇到与多边形的第一个交点时进入到多边形,第二个交点是离开多边形,可以推断出,当L和多边形的交点数目C为奇数时,P点在多边形中,C为偶数时,P点在多边形外。
4种特殊情况
包含关系
判断图形是否包含在多边形中
判断线段是否在多边形中
① 必要条件一:线段的两个端点都在多边形内,但由于多边形可能为凹,所以这不能成为判断的充分条件。
②必要条件二:线段和多边形的所有边都不内交。注:两线段内交是指两线段相交且交点不在两线段的端点)
③线段和多边形交于线段的两端点并不会影响线段是否在多边形内;但是如果多边形的某个顶点和线段相交,还必须判断两相邻交点之间的线段是否包含于多边形内部。
包含关系
判断图形是否包含在多边形中
判断线段是否在多边形中的基本思想
求出所有和线段相交的多边形的顶点
按照X-Y坐标排序(X坐标小的排在前面,对于X坐标相同的点,Y坐标小的排在前面,这种排序准则也是为了保证水平和垂直情况的判断正确)
排序后,相邻的两个点就是在线段上相邻的两交点,如果任意相邻两点的中点也在多边形内,则该线段一定在多边形内。
包含关系
包含关系
判断图形是否包含在多边形中
判断折线是否在多边形内: 
只要判断折线的每条线段是否都在多边形内即可。
判断多边形是否在多边形内
只要判断多边形的每条边是否都在多边形内即可。
判断矩形是否在多边形内
将矩形转化为多边形,然后再判断是否在多边形内。 
判断圆是否在多边形内
只要计算圆心到多边形的每条边的最短距离,如果该距离大于等于圆半径则该圆在多边形内。
包含关系
包含关系
包含关系应用示例
A Pilot in Danger
Sample Input
4
-1.0 -1.0
2.0 -1.0
2.0 2.0
-1.0 2
                 原创力文档
原创力文档 
                         
                                    

文档评论(0)