在四个方向中的任何一个方向上查找与给定矩形最近的矩形 [关闭]

Find the closest rectangle to a given rectangle in any of four directions [closed]

提问人:furious programming 提问时间:10/7/2023 最后编辑:Rethunkfurious programming 更新时间:10/8/2023 访问量:107

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

上个月关闭。

社群在上个月审查了是否要重新讨论这个问题,并关闭了这个问题:

原始关闭原因未解决

给定几十个不重叠但任意聚集在一起的矩形,如何选择任何特定矩形的上方、下方、左侧或右侧的矩形?

  1. 给定一个矩形 R,如何找到上面、下面、左边和右边最接近的矩形?(几何算法)
  2. 在特定矩形 R 的某个搜索方向上,如果另外两个矩形 S 和 T 与 R 同样接近,那么应该选择 S 和 T 中的哪一个?

上下文:在游戏中,特定的矩形 R 被视为活动。当用户按下箭头键或使用 4 方向控制器向某个方向(向上、向下、向左或向右)移动时,应仅选择一个向上、向下、向左或向右移动的矩形。

因此,我们需要一种有效的算法来选择相对于所选矩形 R 的某个方向上最接近的矩形,以及一些逻辑,以便在有多个矩形时仅选择一个矩形。


我已经尝试过许多不同的方法,包括:计算顶点、质心之间的距离、计算角度等,虽然这些方法效果很好,但在矩形的具体排列中,它们给出了完全糟糕和不直观的结果。

下面是一组矩形示例。蓝色是活动矩形。目标是在向上、向下和向右方向的每个方向上只选取一个矩形。

enter image description here

算法 游戏开发 计算几何 用户体验

评论

1赞 Eric Postpischil 10/7/2023
问题真的是定义“视觉上最接近”吗?当用户按下四个箭头键之一时,选择哪个最不容易混淆的?
1赞 Eric Postpischil 10/7/2023
你应该重写这个问题。你不是在寻找一种搜索算法,所以“有没有已知的搜索算法?”是放在帖子中的错误问题,而且标题具有误导性。您正在寻找一个标准来选择人类认为在给定方向上最接近的矩形,而不是用于查找它的算法。我不确定这是一个编程问题。
1赞 273K 10/7/2023
这样的问题属于 cs.stackexchange.com
3赞 user3386109 10/7/2023
像这样的界面从来都不是直观的。请考虑问题的这一子集。如果 A 或 B 处于活动状态,并且方向为向下,则 C 是唯一的选择。但是当 C 处于活动状态并且方向向上时,您会选择 A 还是 B?用户将期望回到上一个矩形,即直观的选择由运动历史决定。但是,您需要决定保留多少历史记录是有用的。底线:如果你想让普通用户直观地做到这一点,那么每个矩形的每个方向都必须有一个选择。
1赞 furious programming 10/7/2023
@Rethunk:这不是家庭作业。我目前正在为一款游戏开发一个 GUI 系统,我所问的最终目的是用于在控件之间移动焦点,仅使用四个基本方向。该算法应该是通用的,因为不知道界面将如何构建(控件的布局是什么)。此外,布局可能会在运行时发生变化 - 可能会添加或删除控件,某些控件可能会动态启用或禁用等。

答: 暂无答案