博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 判断点是否在多边形内
阅读量:2067 次
发布时间:2019-04-29

本文共 1117 字,大约阅读时间需要 3 分钟。

///     /// 判断点是否在多边形内.    /// ----------原理----------    /// 注意到如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,    /// 如果P在多边形外部,则交点个数必为偶数(0也在内)。    ///     public bool IsInPolygon(Vector3 checkPoint, List
polygonPoints) {
bool inside = false; int pointCount = polygonPoints.Count; Vector2 p1, p2; for (int i = 0, j = pointCount - 1; i < pointCount; j = i, i++) {
p1 = polygonPoints[i]; p2 = polygonPoints[j]; if (checkPoint.y < p2.y) {
if (p1.y <= checkPoint.y) {
if ((checkPoint.y - p1.y) * (p2.x - p1.x) > (checkPoint.x - p1.x) * (p2.y - p1.y)) {
inside = !inside; } } } else if (checkPoint.y < p1.y) {
if ((checkPoint.y - p1.y) * (p2.x - p1.x) < (checkPoint.x - p1.x) * (p2.y - p1.y)) {
inside = !inside; } } } return inside; }

感谢博主@学而时习之

转载地址:http://labmf.baihongyu.com/

你可能感兴趣的文章
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>
web.xml配置监听器,加载数据库信息配置文件ServletContextListener
查看>>
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>