java判断点与线与面的关系_VC++开发GIS系统(280)判断点与面的拓扑关系
本文介绍GIS系统中,点与面之间拓扑关系的判断方法。
关于点面之间的拓扑
通常情况下可以将点与面的关系做如下划分:
点在面内
点在面的边界上
点在面外
本文做了一个简化处理,将1和2两种情况当做一种。所以本文中判断的点面之间的拓扑关系划分如下:
点在面内
点在面外
点面之间的拓扑算法思路
算法如图:
算法实现
在 _malaBase.h 中声明如下的函数:
bool isPointInPolygon(malaPoint point, vector& Poly);//点是否在多边形内部
@ point 点要素
@ Poly 面(区)要素
并在 _malaBase.cpp中实现上述函数,代码如下:
/*
* 判断点是否在区上
*/
bool malaLogic::isPointInPolygon(malaPoint point, vector& Poly)
{
int LineNum = Poly.size();
malaPoint leftP = point;
malaPoint rightP;
rightP.x = getMaxX(Poly) + 1;
rightP.y = point.y;
int count = 0, yPrev = Poly[LineNum - 2].y;
malaPoint v1, v2;
v1 = Poly[LineNum - 1];
for (int i = 0; i < LineNum; i++)
{
v2 = Poly[i];
if (isPointInLine(leftP, v1, v2))
return true;
if (v1.y != v2.y)
{
if (isLineIntersect(v1, v2, leftP, rightP))
{
if (isPointInLine(v1, leftP, rightP))
{
if (v1.yyPrev)count++; }
else { if (v1.y < yPrev) count++; }
}
else if (!isPointInLine(v2, leftP, rightP))
{
count++;
}
}
}
yPrev = v1.y;
v1 = v2;
}
return (count % 2 == 1);
}
其中函数 isLineIntersect 用于判断两条直线是否相交,可以参考文章《VC++开发GIS系统(167)选择线之判断直线是否与折线相交算法》
详细代码可以参考:GitHub
java判断点与线与面的关系_VC++开发GIS系统(280)判断点与面的拓扑关系相关推荐
- java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计-移动公司crm客户关系管理系统开发与实现-源程序+mysql+系 ...
- java计算机毕业设计高校学生智慧党建系统设计与开发MyBatis+系统+LW文档+源码+调试部署-++
java计算机毕业设计高校学生智慧党建系统设计与开发MyBatis+系统+LW文档+源码+调试部署-++ java计算机毕业设计高校学生智慧党建系统设计与开发MyBatis+系统+LW文档+源码+调试 ...
- Muli3D 5 判断点与面的关系
记录一下: 点与面的关系如图: 如果法相量是单位向量的话,那么分母为1 所以,当 平面的法向量是单位向量的话,看一个点与平面的关系的公司就是分子: Ax0 + By0 + Cz0 + D 在Muli3 ...
- win7 怎么干净删除php,window_win7系统如何删除注册表里面的垃圾文件?,win7系统如何删除注册表里面的 - phpStudy...
win7系统如何删除注册表里面的垃圾文件? win7系统如何删除注册表里面的垃圾文件?在win7系统中我们可以通过删除或修改注册表的垃圾文件,来提高系统的运行速度,但是在删除注册表过程中,如果错误修改 ...
- 类和对象总结及用法 计算点到点距离 线与线的关系 计算三角形平行四边形面积周长 判断形状
1.类和对象简介 类和对象的关系:类是对象的抽象,而对象是类的特例,即类的具体表现形式. 类和对象的区别:类是对象的模板,类是抽象的不占用内存,对象是具体的,占用储存空间. 类中主要包括数据和成员函数 ...
- 【Java基础】UML类图及各种线代表的关系含义总结
文章目录 一.UML常见图 1.类图(Class Diagram) 2.对象图(Object Diagram) 3.时序图(Sequence Diagram) 二.UML类图线的概括 1.类(Clas ...
- Java对点、线、面生成栅格瓦片jpg,并渲染呈现
Java对点.线.面生成栅格瓦片jpg,并渲染呈现 1. 效果图 2. 原理 2.1 面瓦片的生成 2.2 线瓦片的生成 2.3 多点瓦片的生成 3. 源码 参考 这篇博客将介绍从前端HTML页面到后 ...
- 量化投资学习-7:图解股市的基本面、技术面、市场环境面的关系
导读: 用图解的方式,展现股市的基本面.技术面.市场环境面的关系. 一.股市的三面:基本面.技术面.市场环境面 基本面:是参与对象的"里子",是内在的质地.内涵.后台等,根据其内在 ...
- 判断点与圆的位置关系
判断点与圆的位置关系 第一步,创建一个类,代表二维空间的一个点.二维空间确定一个点可参考平面直角坐标系中,确定了x坐标和y坐标,即可确定点的位置 package com.tyl.homework;im ...
最新文章
- 统计数字,空白符,制表符_为什么您应该在HTML中使用制表符空间而不是多个非空白空间(nbsp)...
- fpga中的case语句
- Spring Cloud Feign Clients 无需 Controller自动暴露Restful接口
- 制作wordpress页面的学习记录
- assubclass_Java类class asSubclass()方法及示例
- LeetCode 200. 岛屿数量(图的遍历)
- 深入浅出 Spring 架构设计
- yum mysql 如何启动_CentOS7用yum安装MySQL与启动
- Flex Application初始化顺序
- hdu1861 游船出租【模拟】
- SLAM会议笔记(三)V-LOAM
- Solaris 10 X86安装备忘
- MogDB官网正式亮相!单机256万tpmC再创佳绩
- UnityShader语法英文入门
- outlook正在使用outlook数据文件(.ost)旧的副本,请退出outlook,删除此文件,然后重启outlook。
- 每日一面 - 从 innodb 的索引结构分析,为什么索引的 key 长度不能太长?
- 获取最新中国行政区划
- 给刘成龙的回信( 云中逸客)
- MacCms10潜藏后门分析
- win10怎么开启aptx_Soomal作品 - Windows与OSX 操作系统对aptX支持的验证测试报告 [Soomal]...