判断点在多边形内的方法
来源:互联网 发布:竞翔通良伟软件天宇杯 编辑:程序博客网 时间:2024/04/30 08:17
判断点P是否在多边形中是计算几何中一个非常基本但是十分重要的算法。
判断方法也有好几种。
当你不确定多边形是否为凸多边形的时候采用射线法和转角法
1.射线法:
以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。
这种方法很难处理一种情况:
那就是交点正好在多边形的一个顶点或者多边形的一条正好在射线上时。
如图:
在此基础上提出了平移法,就是将射线平移:这里的平移不是真的平移了,而是改变了
交点的判断条件:每条线段,只要一份端点(高点)高于射线,另一端点(低点)恰在射线上或低于射线,且相交在P点的右侧(x轴的正方向)即可。
2.转角法:
如果P点在多边形内部的话,转角的代数和内部是2PI,对于外部总和是0.
对于已经知道是凸多边形的话,就很简单了,再做一次凸包(在原多边形的基础上判断叉积就可以了),只要不转角就说明在多边形内。
- 判断点在多边形内的方法
- 判断点在多边形内的简单方法
- 点在多边形内的判断
- 模板[点在多边形内的判断]
- 点在多边形内的判断
- 判断点在多边形内的算法
- 判断点在多边形内
- 判断点在多边形内
- 判断点在多边形内
- 判断点在多边形内
- 点在多边形内的检测方法
- 两种方法判断平面内的点是否在多边形内
- 我用的判断点在多边形内的方法 c++
- 点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
- 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
- 判断点在多边形内的多种写法
- 判断点是否在多边形内的actionscript代码
- 判断点在多边形内的多种写法
- MSSQL数据库快捷键大全
- 单例模式c++实现方法总结
- GM7123 常见问题 三通道高清视频编码电路 GM7123
- IO系统_用递归遍历目录
- Codeforces Beta Round #27 (Codeforces format, Div. 2) D Ring Road 2(二分图染色版)
- 判断点在多边形内的方法
- 由IT 绩效考核引发的高管辞职(缘何绩效成为鸡肋)
- spring干什么?(一)
- Boost智能指针——weak_ptr vs shared_ptr
- Linux学习笔记(六)
- 构造函数与析构函数的调用次序
- Oracle常用dump命令介绍
- 【开发工具】VS编译后生成的文件类型
- 传递实参时丢弃类型限定的原因