ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

判断点在选择的范围内

2022-07-27 14:35:51  阅读:133  来源: 互联网

标签:P0 判断 Point int region pnt 选择 P1 范围


 #region 判断点在选择的范围内
        //判断点在线的一边 
        private int isLeft(Point P0, Point P1, Point P2)
        {
            int abc = (int)((P1.X - P0.X) * (P2.Y - P0.Y) - (P2.X - P0.X) * (P1.Y - P0.Y));
            return abc;
        }  
        //判断点pnt是否在region内主程序  
        private bool isInRegion(Point pnt, List<Point> region)
        {
            int wn = 0, j = 0; //wn 计数器 j第二个点指针  
            for (int i = 0; i < region.Count; i++)
            {
                //开始循环  
                if (i == region.Count - 1)
                {
                    j = 0;//如果 循环到最后一点 第二个指针指向第一点  
                }
                else
                {
                    j = j + 1; //如果不是 ,则找下一点  
                }
                if (region[i].Y <= pnt.Y) // 如果多边形的点 小于等于 选定点的 Y 坐标  
                {
                    if (region[j].Y > pnt.Y) // 如果多边形的下一点 大于于 选定点的 Y 坐标  
                    {
                        if (isLeft(region[i], region[j], pnt) > 0)
                        {
                            wn++;
                        }
                    }
                }
                else
                {
                    if (region[j].Y <= pnt.Y)
                    {
                        if (isLeft(region[i], region[j], pnt) < 0)
                        {
                            wn--;
                        }
                    }
                }
            }
            if (wn == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        #endregion

 

标签:P0,判断,Point,int,region,pnt,选择,P1,范围
来源: https://www.cnblogs.com/devgis/p/16524731.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有