`
izuoyan
  • 浏览: 8951320 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

二维平面上点与多边形位置关系判断

 
阅读更多

要判断点是否落在多边形内部,图形学书上给出了三种解决方法,一种是针对凸多边形的叉乘法,二是角度和判别法,三是水平/垂直交叉点数判别法。由于后两种可以针对任意多边形,故权衡之后我用了最简单最直接的角度和判别法。

double angle = 0;
realPointList::iterator iter1 = points.begin();
for (realPointList::iterator iter2 = (iter1 + 1); iter2 < points.end();
++iter1, ++iter2)
{
double x1 = (*iter1).x - p.x;
double y1 = (*iter1).y - p.y;
double x2 = (*iter2).x - p.x;
double y2 = (*iter2).y - p.y;
angle += angle2D(x1, y1, x2, y2);
}

if (fabs(angle - span::PI2) < 0.01) return true;
else return false;

另外,可以使用bounding box来加速。
if (p.x < (*iter)->boundingBox.left ||
p.x > (*iter)->boundingBox.right ||
p.y < (*iter)->boundingBox.bottom ||
p.y > (*iter)->boundingBox.top) 。。。。。。

对于多边形来说,计算bounding box非常的简单。只需要把水平和垂直方向上的最大最小值找出来就可以了。


本文属Span Zhang(张友邦)原创,转载请注明出处。

中国原创分形艺术、中国原创分形软件第一站

分享到:
评论

相关推荐

    判断点是否在二维多边形中

    给定一个二维点,判断该点是否在二维多边形中

    关于二维的点、线、多边形、圆几何关系库 c

    关于二维的点、线、多边形、圆几何关系库 c ,包含头文件就能用。 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的...

    多边形的方向判断

    本文用三维空间来解决二维平面问题 , 从而得出了一个简单的点与有向线段之间关系的 判别式 , 并在此基础上根据凸凹点的性质及有向多边形的性质提出了不用解任何方程组也不用计 算三角函数的判定平面多边形的简单性 ...

    从点到折线或多边形的距离:查找从点到折线或闭合多边形的最小距离-matlab开发

    p_poly_dist.m - 计算从二维平面上的一组 np 点 p(1), p(2),... p(np) 到折线或闭合多边形的距离。 折线定义为连接 nv 个有序顶点 v(1), v(2), ..., v(nv) 的一组 nv-1 段。 可以选择将多段线视为闭合多边形。 点...

    地理信息系统算法基础.rar

    6.3.3任意二维平面多边形面积量算 6.3.4任意三维平面多边形面积量算 思考题 第7章空间数据索引算法 7.1B树与B+树 7.1.1B树索引结构 7.1.2B+树索引结构 7.2R树结构 7.2.1R树定义 7.2.2R树索引的主要...

    地理信息系统算法基础

    目录序前言第1章算法设计和分析1.1概述1.2算法设计原则1.3算法复杂性...关系的判定2.2矢量的概念2.2.1矢量加减法2.2.2矢量叉积2.3折线段的拐向判断2.4判断点是否在线段上2.5判断两线段是否相交2.6判断矩形...

    北交《计算机图形学》在线作业二-0003参考答案.docx

    在光亮度插值算法中,下列论述哪个是错误的( ) A.Gouraud明暗模型计算中,多边形与扫描平面相交区段上每一采样点的光亮度值是由扫描平面与多边形边界交点的光亮度插值得到的 B.Phong明暗处理模型中,采用了双线性...

    基于opencv3.1库的JAVA源码

    范例11-6-1利用二维特征点及Homography单映射寻找物体 472 范例11-6-2利用二维特征点及单映射寻找物体Live版 476 范例11-6-3利用二维特征点及单映射寻找近似物体 476 范例11-7-1客制化角点检测视窗 477 范例11-8-1...

    OpenGL实现面片的选取与虚拟跟踪球

    与各个面片求交得到交点,判断交点是否在平面内。(其中,射线是两个平面方程,平面是一个方程,联立三个方程三个未知数,可以求出该点坐标)(不知道是否有效率高一点的方法,本人刚学OpenGL没多久,欢迎指教) 5....

    华东《计算机图形学》2017年春学期在线作业(一).doc

    二维平面中的点用非齐次坐标表示时,具有两个分量,且是唯一的 B. 齐次坐标技术就是用n+1维向量表示一个n维向量,而且在n+1维空间中讨论n维向量的变换 C. 用齐次坐标技术可以对平移、比例、旋转等几何变换用矩阵乘法来...

    《计算机图形学》在线作业二.doc

    Gouraud明暗模型计算中,多边形与扫描平面相交区段上每一采样点的光亮度值是由扫描 平面与多边形边界交点的光亮度插值得到的 B. Phong明暗处理模型中,采用了双线性插值和构造法向量函数的方法模拟高光 C. Gouraud...

    计算机辅助设计与制造55.docx

    单选题共10题,共30分 1、在二维图形的坐标变换中,若图上一点由初始坐标(x,y)变换成坐标(x',y'),绕原点逆时针旋转30度,其中x'=ax+cy,y'=bx+dy,则a为(C)(3分) A、1 B、-1 C、cos30 D、sin30 2、在二维...

    逆向工程四大软件简介

     由于受到测量工具及测量方式的限制,有时会出现一些噪音点,Surfacer 有很多工具来对点阵进行判断并去掉噪音点,以保证结果的准确性。  通过可视化点阵观察和判断,规划如何创建曲面。  一个零件,是由很多...

    ACM巨全模板 .pdf

    2.二维RMQ求区间最大值 (二维区间极值) 3.线段树模板(模板为区间加法) (线段树染色) (区间最小值) 4.线性基 (求异或第k大) 5.主席树(静态求区间第k小) (区间中小于k的数量和小于k的总和) (区间中第一个大于或等于k的...

    常用算法代码

    | 二维树状数组 17 | TRIE 树(K 叉) 17 | TRIE 树(左儿子又兄弟) 18 | 后缀数组 O(N * LOG N) 18 | 后缀数组 O(N) 18 | RMQ 离线算法 O(N*LOGN)+O(1) 19 | RMQ(RANGE MINIMUM/MAXIMUM QUERY)-ST 算法 (O...

    200个经典C程序源码(包括基础篇+数据结构篇+数值计算与趣味数学篇+图形篇+系统篇+常见试题解答篇).zip

    014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...

    220个C语言程序源代码.zip

    014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...

    浙江大学ACM模板 计算几何,图论,数据结构,经典题的模板

    1.16.6 存不存在一个平面把两堆点分开(poj3643) 66 1.16.7 pku_3335_判断多边形的核是否存在 67 1.16.8 pku_2600_二分+圆的参数方程 74 1.16.9 pku_1151_矩形相交的面积 76 1.16.10 pku_1118_共线最多的点的个数 78 ...

    200个C程序.rar

    014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...

Global site tag (gtag.js) - Google Analytics