Qt 判断点是否在多边形内
2017-03-17 14:30
141 查看
这里不用考虑线段的斜率,不会出现0作除数的bug,因为端点y值与目标点y值相等的时候,会认为端点在上面,参考程序中的>=y
bool DataConvert::isInsidePoly(const QPointF &iPoint,const QPolygonF &iMyPoly)
{
qreal x=iPoint.x(),y=iPoint.y();
int left=0;
int right=0;
int j=iMyPoly.size()-1;
for(int i=0;i<iMyPoly.size();i++){
if((iMyPoly[i].y()<y&&iMyPoly[j].y()>=y)||(iMyPoly[j].y()<y&&iMyPoly[i].y()>=y)){
if((y-iMyPoly[i].y())*(iMyPoly[i].x()-iMyPoly[j].x())/(iMyPoly[i].y()-iMyPoly[j].y())+iMyPoly[i].x()<x){
left++;
}
else right++;
}
j=i;
}
return left&right;
}
bool DataConvert::isInsidePoly(const QPointF &iPoint,const QPolygonF &iMyPoly)
{
qreal x=iPoint.x(),y=iPoint.y();
int left=0;
int right=0;
int j=iMyPoly.size()-1;
for(int i=0;i<iMyPoly.size();i++){
if((iMyPoly[i].y()<y&&iMyPoly[j].y()>=y)||(iMyPoly[j].y()<y&&iMyPoly[i].y()>=y)){
if((y-iMyPoly[i].y())*(iMyPoly[i].x()-iMyPoly[j].x())/(iMyPoly[i].y()-iMyPoly[j].y())+iMyPoly[i].x()<x){
left++;
}
else right++;
}
j=i;
}
return left&right;
}
相关文章推荐
- Qt判断点是否在多边形区域中
- 【C/C++学习笔记】判断一个点是否在多边形内部的例子
- Qt数据库判断本地是否已经创建/存在数据库,SQLite
- 判断点是否处于多边形内的三种方法
- sgu Theodore Roosevelt【判断点是否在凸多边形内模板】
- HDU 2108 逆时针给出多边形的顶点,判断是否为凸多边形,水题
- c# 判断点是否在区域内 点在区域内 在多边形内 判断
- zoj 1248 || poj 1474 Video Surveillance(判断多边形是否存在核)
- 判断多边形与多边形是否相交的方法,代码来自于OpenLayers。
- 判断点是否在多边形内
- Qt 判断一个点是否落在三角形内(算法)
- C 判断点是否在多边形内
- Qt:判断QString中是否有汉字
- POJ 1584 A Round Peg in a Ground Hole(判断凸多边形,判断圆是否在凸多边形内)
- 判断点是否在多边形内的算法和C语言程序
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部
- 判断点是否在多边形内(2D空间)
- 计算几何--(半平面判断多边形是否存在内核以及内核面积计算)
- 判断点是否在多边形中
- 点在多边形内算法——判断一个点是否在一个复杂多边形的内部翻译 (转)