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

Qt判断点是否在多边形区域中

2017-06-05 14:26 267 查看
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;  

  

}  

极端情况下,可能会有问题,一般情况下,运行良好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: