java - 矩形相交共享边

标签 java android andengine intersection rectangles

我正在尝试确定两个矩形是否彼此相邻。如果它们共享一条边或一条边的一部分,那么我想包括它们,如果它们只共享一个顶点,那么我不想包括它们。

我尝试过使用 android android.graphics.Rect,我希望 intersect 方法会返回 true 给我一个矩形,宽度为 0 但相交边缘的点。我正在使用 andEngine 并尝试了 org.andengine.entity.primitive.Rectangle 的 collideswith 方法,但是它返回 true,即使矩形只共享一个角顶点。

有什么好的方法可以做到这一点吗?我能想到的唯一其他方法是尝试创建所有边的集合,然后查看它们是否相等或在某种程度上部分相等。

这是一张展示我想要的图片。如果我点击矩形 1,那么我想返回矩形 2,3 和 4,但不是 5。

“ map ”:

最佳答案

听起来你需要一个新的类来做到这一点。我会获取矩形每个角的坐标。然后,当您选择一个矩形时,您可以通过一次找到它们的一侧来获取与其相邻的矩形。以顶部为例,检查其他哪些矩形的角具有相同的高度。从该列表中,您可以检查哪些点存在于两个顶角之间的至少一个点上。因此,如果左上角是 0,3,右上角是 4,3,那么您将查找 y=3 处的角点列表。从该列表中,您可以找到 0<=x<=4 的所有角点,并且任何适合的角点都将是相邻的。然后,您对另外的每一面都执行相同的操作。它应该是一个很容易制作的类,但我不会编写任何代码,因为我不知道如何存储数据或如何在代码中引用它。如果您需要帮助,请发表评论。

关于java - 矩形相交共享边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100842/

相关文章:

java - 找不到 hibernate.cfg.xml (该文件实际上不存在)。配置位于dispatcher-servlet中

android - 为 Android 应用程序创建通用 header

android - Getview 参数 "convertview"在新的 "position"参数上不为空

android - 加载 map 后出现 AndEngine 错误 : Invalid Index (onUpdate) FATAL EXCEPTION: UpdateThread

android - 我如何在 android(Andengine) 中处理游戏继续和外部事件

android - 动态壁纸和引擎示例错误

Java 7 - 字符串连接器和添加方法

java - LocaleChangeInterceptor 中 Autowiring 身份验证以将 lang 存储在数据库中不起作用

java - C++ std::string 到固定长度的 jstring

android - 将滚动条添加到自定义 ViewGroup?