天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 3|回复: 0

//判断点是否在闭合区域内

[复制链接]
  • TA的每日心情
    开心
    昨天 15:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    410

    主题

    167

    回帖

    2704

    积分

    管理员

    积分
    2704
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    判断一个点,或者说某个物体是否在一个多边形内,或者说是否在某个区域内,在几何算法中还是比较常见的也比较实用的,如何判断呢,这在凸多边形里面应该比较容易,但是不规则多边形就需要比较特殊的方法了。无论是凹多边形,凸多边形,长歪了的各种多边形里面都适用。 本文使用射线法判断点是否在多边形内部。[code]//判断点是否在闭合区域内
    bool IsPointInPolygon(Point p, vector points)
    {
    //vector points:表示闭合区域由这些点围成
        double minX = points[ 0 ].x;
        double maxX = points[ 0 ].x;
        double minY = points[ 0 ].y;
        double maxY = points[ 0 ].y;
        for ( unsigned int i = 1 ; i < points.size() ; i++ )
        {
            Point q = points[ i ];
            minX = min( q.x, minX );
            maxX = max( q.x, maxX );
            minY = min( q.y, minY );
            maxY = max( q.y, maxY );
        }
    ​
        if ( p.x < minX || p.x > maxX || p.y < minY || p.y > maxY )
        {
            return false;
        }
    ​
        bool inside = false;
        for ( unsigned int i = 0, j = points.size() - 1 ; i < points.size() ; j = i++ )
        {
            if ( ( points[ i ].y > p.y ) != ( points[ j ].y > p.y ) &&
                p.x < ( points[ j ].x - points[ i ].x ) * ( p.y - points[ i ].y ) / ( points[ j ].y - points[ i ].y ) + points[ i ].x )
            {
                inside = !inside;
            }
        }
    ​
        return inside;
    }[/code]

     

     

     

     

    //判断点是否在闭合区域内
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|

    GMT+8, 2024-7-1 05:38 , Processed in 0.057387 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表