我需要在 Java 的画布上绘制一些 2D 对象(矩形、类似窗口)
主要目标是将 2D 坐标映射到对象,例如识别单击了哪个对象。
问题:
保持 2D 对象大小/位置的常用方法是什么。(哪些数据结构等)
应该有一种有效的方式来说明哪个对象位于坐标 x,y
我需要在 Java 的画布上绘制一些 2D 对象(矩形、类似窗口)
主要目标是将 2D 坐标映射到对象,例如识别单击了哪个对象。
问题:
保持 2D 对象大小/位置的常用方法是什么。(哪些数据结构等)
应该有一种有效的方式来说明哪个对象位于坐标 x,y
通常你会在这里使用“分而治之”的策略:你的视图(矩形)包含对该视图中视图的引用,而不是将所有视图放在一个大数组中。然后从左到右对它们进行排序,您可以应用递归二进制搜索来查找您正在单击的视图。
不知道如何在 Java 中做到这一点,但 C++ 中一个非常简单的类定义是:
class MyView {
std::vector<MyView*> subviews;
int x;
int y;
int width;
int height;
};
搜索您单击的视图非常简单快捷。
我一直在寻找 - 是一个 四叉树 对于不太复杂的结构,一个数组会做。