查找矩形内的所有点?

Posted

技术标签:

【中文标题】查找矩形内的所有点?【英文标题】:Finding all Points inside a rectangle? 【发布时间】:2017-09-09 17:22:00 【问题描述】:

我已尝试查看有关此主题的所有其他文章,但一无所获。我的问题是,给定一个矩形的四个角点,我怎么能找到位于矩形内部或矩形上的任何点,无论其旋转如何。我这样做的目的是我有一个代表地图的数组,每个索引代表一个点位置,我希望能够在这个地图上放置一个矩形并填充它覆盖的任何点。如果可以提供伪代码以及数学,我将不胜感激。我熟悉java和RBX.Lua

【问题讨论】:

***.com/questions/17136084/… 可能重复。 【参考方案1】:

只需谷歌“填充矩形算法”,您就会找到大量的解决方案和示例。

一种简单的方法:

对于栅格(图像)的每一行(或每一列),计算与矩形的交点。

这为您留下了一组必须填充的间隔。

也许阅读本文也有帮助 http://fivedots.coe.psu.ac.th/~montri/Teaching/240-422/filling1.pdf

【讨论】:

【参考方案2】:

使用Point-In-Polygon (Java sample code) 检查一个点是否在区域内。对于您的情况,该区域是一个矩形。如果有多个点,需要逐点循环检查。

【讨论】:

【参考方案3】:

我不知道这是不是你要找的……

但解决此问题的一种简单方法仍然是,使用线条绘制算法连接四个点并应用简单的洪水填充或边界填充算法。

注意:所有这些算法都属于计算机图形学。 此外,这种技术将是一种比逐个填充内部点更快的方法,并且还消除了对矩形外部点的计算。

在应用填充之前,您必须使用画线算法绘制边界线并将边界值设置为 newcol (newcolour),然后可以使用以下填充算法。

void floodfill(int x,int y,int old,int newcol)

            int current;
            //assign current with the color of x,y point

            if(current==old)
            

                            //assign x,y point with newcol

                            floodfill(x+1,y,old,newcol);
                            floodfill(x-1,y,old,newcol);
                            floodfill(x,y+1,old,newcol);
                            floodfill(x,y-1,old,newcol);
            

您可以使用上述方法,您只需传递矩形的任何内部点(x,y) 和要替换为新颜色的旧颜色。 假设颜色值是您提到的数组中的整数值。

【讨论】:

以上是关于查找矩形内的所有点?的主要内容,如果未能解决你的问题,请参考以下文章

性能 - 按纬度/经度查找特定距离内的所有点

查找包含点的矩形 - 高效算法

在python中查找地理数据中圆圈内的所有坐标

查找图像内的边缘(矩形的边界)

找到最小矩形数量的算法

使用Google App Engine GQL查找给定半径内的所有位置