Java 在矩形区域中查找矩形的最近可能位置

Java 在矩形区域中查找矩形的最近可能位置,java,algorithm,libgdx,Java,Algorithm,Libgdx,我正在一个2D城堡防御系统上编程,今天我遇到了一个问题,我没能找到一个好的解决方案。见下图: 我想找到一个最接近的位置,在这个矩形区域中放置红色矩形,而不重叠任何矩形。我所说的最近可能位置是指最接近当前鼠标位置的位置,因此通常是指距离任何给定点最近的可能位置 解决这个问题的正确算法是什么 谢谢 这是一个优化问题,其中约束是线性的,目标函数是(分段)二次或线性的,具体取决于您希望如何定义与光标的距离 假设矩形由 x_i,y_i,w_i,h_i表示i=1..n 红色矩形的大小为w,h,决策变量为

我正在一个2D城堡防御系统上编程,今天我遇到了一个问题,我没能找到一个好的解决方案。见下图:

我想找到一个最接近的位置,在这个矩形区域中放置红色矩形,而不重叠任何矩形。我所说的最近可能位置是指最接近当前鼠标位置的位置,因此通常是指距离任何给定点最近的可能位置

解决这个问题的正确算法是什么


谢谢

这是一个优化问题,其中约束是线性的,目标函数是(分段)二次或线性的,具体取决于您希望如何定义与光标的距离

假设矩形由
x_i,y_i,w_i,h_i表示i=1..n
红色矩形的大小为
w,h
,决策变量为红色矩形的
x,y
位置

然后,非重叠约束为:


x>=x_i+w_i
y>=y_i+h_i
x这是一个优化问题,其中约束是线性的,目标函数是(分段)二次或线性的,具体取决于您想要如何定义与光标的距离

假设矩形由
x_i,y_i,w_i,h_i表示i=1..n
红色矩形的大小为
w,h
,决策变量为红色矩形的
x,y
位置

然后,非重叠约束为:


x>=x_i+w_i
y>=y_i+h_i
x希望您使用某种网格来定位矩形,而不仅仅是随机浮点值作为坐标,否则,这不会很快计算出来…希望您使用某种网格来定位矩形,而不仅仅是将随机浮点值作为坐标,否则,这不会很快计算出来…非常感谢这个全面的答案!我想稍后我会使用您的建议并自己实施(可能需要一些时间…我不想使用任何外部库)。现在,我决定只使用一个非常简单的变通方法,这已经证明是足够的了。我只是在一个围绕着所需位置的不断增长的圆圈上尝试随机位置。这不是一种精确的暴力…但终止速度足够快,可以在我的游戏中使用。非常感谢这个全面的答案!我想稍后我会使用您的建议并自己实施(可能需要一些时间…我不想使用任何外部库)。现在,我决定只使用一个非常简单的变通方法,这已经证明是足够的了。我只是在一个围绕着所需位置的不断增长的圆圈上尝试随机位置。这不是一种精确的蛮力…但终止速度足够快,可以在我的游戏中使用。