如何找到矩形内的所有点?

我已经看过了这个主题的所有其他文章,但是我什么也没有找到。我的问题是,给定一个矩形的四个角点,无论其旋转角度如何,如何找到位于矩形内或矩形上的任何点。我之所以这样问是因为我有一个表示地图的数组,每个索引代表一个点位置,我想能够在这张地图上放置一个矩形并填充任何它覆盖的点。如果能提供伪代码以及数学知识,我将不胜感激。我熟悉Java和RBX.Lua。

点赞
用户2858170
用户2858170

将下面翻译成中文并且保留原本的 markdown 格式

只要谷歌搜索“填充矩形算法”,您就会找到很多解决方案和示例。

其中一种简单的方法是:

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

这将使您得到一组要填充的区间。

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

2017-04-13 14:40:43
用户7187817
用户7187817

我不知道这是否是你要找的...

但解决这个问题的简单方法是连接四个点并应用简单的泛洪或边界填充算法。

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

在应用填充之前,您需要使用线条绘制算法绘制边界线,并将边界的值设置为 newcol(新颜色),然后可以使用以下填充算法。

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)和要替换为新颜色的旧颜色即可。 假设您提到的颜色值是数组中的整数值。

输入图像说明

2017-04-13 14:49:09
用户4907913
用户4907913

使用 点是否在多边形内Java示例代码)来检查点是否在区域内。 对于您的情况,该区域是一个矩形。 如果有多个点,则需要循环并逐点进行检查。

2017-04-13 15:46:37