我已经尝试过查看有关此主题的所有其他文章,但我没有提到任何内容。我的问题是,给定一个矩形的四个角点,我怎么能找到位于矩形内部或矩形上的任何点,无论它是否旋转。我的目的是我有一个数组代表一个地图,每个索引代表一个点位置,我希望能够在这个地图上放置一个矩形并填充它覆盖的任何点。如果可以提供伪代码以及数学,我将非常感激。我熟悉java和RBX.Lua
答案 0 :(得分:0)
只需google“填充矩形算法”,您就会找到大量的解决方案和示例。
一个简单的方法:
对于栅格(图像)的每一行(或列),计算与矩形的交点。
这将为您留下一组必须填写的区间。
也许阅读本文也有助于http://fivedots.coe.psu.ac.th/~montri/Teaching/240-422/filling1.pdf
答案 1 :(得分:0)
我不知道这是不是你要找的......
但是解决这个问题的一个简单方法是,使用线条绘制算法连接四个点并应用简单的填充填充或边界填充算法。
注意:所有这些算法都属于计算机图形学。 此技术也是比逐个填充内部点更快的方法,也消除了矩形之外的点的计算。
在应用填充之前,您必须使用线绘图算法绘制边界线,并将边界值设置为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)和旧颜色,然后用新颜色替换。 假设颜色值是您提到的数组中的整数值。
答案 2 :(得分:0)
使用Point-In-Polygon(Java sample code)检查某个点是否在该区域内。对于您的情况,该区域是一个矩形。如果有乘法点,需要循环并逐点检查。