您的位置:首页 > 编程语言 > Qt开发

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: