摘要: 问题描述:已知点P(x,y)和多边形Poly,判断点P(x,y)是否在多边形内部。基本方法:射线法以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外部,考虑沿着L从无究远处开始自左向右移动。遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形...因而当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数,则P在多边形外。特殊情况分析,如图下图(a),(b),(c),(d)所示。图(a)中,L和多边形的顶点相交,交点只能计算一个。图(b)中,L和多边形顶点的交点不应被计算。图(c)和(d)中,L和多边形的一条边重合,这条边应 阅读全文
posted @ 2013-08-01 18:07 一点心青 阅读(10590) 评论(3) 推荐(2) 编辑
摘要: 问题描述:已知两条线段P1P2和Q1Q2,判断P1P2和Q1Q2是否相交,若相交,求出交点。两条线段的位置关系可以分为三类:有重合部分、无重合部分但有交点、无交点。算法的步骤如下:1.快速排斥实验。设以线段P1P2为对角线的矩形为R,设以线段Q1Q2为对角线的矩形为T,如果R和T不相交,则两线段不相交。2.跨立实验。如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2,则矢量(P1-Q1)和(P2-Q1)位于矢量(Q2-Q1)的两侧,即( P1 - Q1 ) × ( Q2 - Q1 ) * ( P2 - Q1 ) × ( Q2 - Q1 ) = 0) & 阅读全文
posted @ 2013-08-01 17:09 一点心青 阅读(18475) 评论(0) 推荐(1) 编辑
摘要: 问题描述:已知多边形点集C={P1,P2,...,PN},其排列顺序是杂乱,依次连接这N个点,无法形成确定的多边形,需要对点集C进行排序后,再绘制多边形。点集排序过程中,关键在于如何定义点的大小关系。以按逆时针排序为例,算法步骤如下:定义:点A在点B的逆时针方向,则点A大于点B1.计算点集的重心O,以重心作为逆时针旋转的中心点。2.计算点之间的大小关系。大小关系的计算,可由两种方法进行计算。方法1:以重心O作一条平行于X轴的单位向量OX,然后依次计算OPi和OX的夹角,根据夹角的大小,确定点之间的大小关系。OPi和OX夹角越大,说明点Pi越小,如图所示。方法2:根据向量叉积的定义,向量OPi和 阅读全文
posted @ 2013-08-01 15:30 一点心青 阅读(21975) 评论(15) 推荐(1) 编辑