通过C++实现判断点与多边形的关系和两点之间的距离
来源:互联网 发布:公司数据库搭建 编辑:程序博客网 时间:2024/05/01 17:54
1.判断两点之间的距离
#include<math.h>//计算两点之间的距离double calculateDistence(double* p0,double* p){ double tempx = p[0] - p0[0]; double tempy = p[1] - p0[1]; double tempz = p[2] - p0[2]; //pow(x,y)--x的y次方 double radius2 = pow(tempx,2)+pow(tempy,2)+pow(tempz,2); return sqrt(radius2);}
2.判断点是是否在多边形内
#include<vector>#include<math.h>struct Point2D{ double x; double y; Point2D(double _x,double _y){ x = _x; y = _y; }};bool pointInPolygon11(double* _p,std::vector<double*>& _polygon){ int numCrossPoint = 0; for(int i=0; i<_polygon.size(); i++){ double* p1 = _polygon.at(i); //(i+1)/polygon.size()--处理最后一点与第一点相连接 double* p2 = _polygon.at((i+1)%_polygon.size()); //这是一条水平线 if(p2[1] == p1[1]){ if(p1[1] == _p[1]){ if(_p[0] <= fmax(p1[0],p2[0]) && _p[0] >= fmin(p1[0],p2[0])){ return 1; }else{ continue; } }else{ continue; } } if(_p[1] < fmin(p1[1],p2[1]) || _p[1] > fmax(p1[1],p2[1])){ continue; } //求点的水平射线与边的交点 double x = (_p[1]-p1[1])*(p2[0]-p1[0])/(p2[1]-p1[1]) + p1[0]; //只统计与右射线的交点 if(x>=_p[0]){ ++numCrossPoint; } } return (numCrossPoint%2 == 1);//0外}
阅读全文
0 0
- 通过C++实现判断点与多边形的关系和两点之间的距离
- 判断点与多边形的位置关系
- 判断点与多边形的位置关系
- matlab 判断点与多边形区域之间的位置关系(内,外)
- 两点之间的距离
- 两点之间的距离
- 两点之间的距离
- 判断点与多边形位置关系的算法
- 地图上点与多边形的关系判断
- 几种判断点与多边形关系的算法介绍
- 判断点与多边形的关系(2):面积法
- 判断点与多边形的关系(4):射线法
- 多边形与多边形 位置关系的判断
- 判断点与多边形的关系(3):角度和法
- 设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
- 求两点之间的距离
- 求两点之间的距离
- 求两点之间的距离
- Spring MVC中Date处理
- 283MoveZeroes
- 【HDU1695】GCD(莫比乌斯反演)
- 虚拟机Ubuntu14.04+MXNET+CPU安装
- c语言实现二叉树常用算法
- 通过C++实现判断点与多边形的关系和两点之间的距离
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 关于Home Lab的搭建——像使用服务器一样远程管理(三)
- Mybatis之缓存
- maven私服搭建和使用
- 关于Thread中的toString的问题
- C++实现二叉树的递归遍历与非递归遍历
- 友盟多渠道打包
- Fiddler的详细介绍