【发布时间】:2014-12-21 18:28:19
【问题描述】:
目标是拥有一个表示布尔值的二维集合的对象。
我有一个 Size(x, y) 的点网格
对象放置在网格上的 Point(x, y) 位置,边界为 Rectangle(new Size(w, h), new Point(x, y))
目标是将对象表示为 bool[,],其中数组位置的索引表示 Rectangles 边界中的偏移量。
我可能有点想多了,所以我会解释我使用 Rectangle 是因为 IntersectsWith 非常方便。
物体可以向任意方向移动一个单位,但不能移动到已经被另一个物体占据的位置。
我希望最终用法类似于:
Pattern p1 = new Pattern(Point location1, bool[,] pattern);
Pattern p2 = new Pattern(Point location2, bool[,] pattern);
if(p1.Intersects(p2))
throw new ...
我只关心模式重叠。我希望图案的一般大小和形状是可变的。
我正在想办法用基于总面积的某些规则重新定义模式。
我正在寻找解决此问题的最佳方法的建议。
【问题讨论】:
-
也许这个问题更适合programmers.stackexchange.com
-
你的问题是有视觉表现还是只使用矩形的概念?
-
所以如果矩形相交,那么形状可能相交。矩形方法是快速确定是否需要进一步检查的好方法。为了最终确定,您必须遍历数组并查看其中的任何相同位置是否都设置为 true。显然,如果两种模式具有不同大小的“边界矩形”,您需要明确检查以确保不超过其他形状的行/列。
-
您可能对我不久前创建的Project 感兴趣(下面的 cmets 中的源代码链接)。我将这些片段表示为一个位置,其中包含图案每个部分的偏移列表。不知道这是否是最好的设计,但它非常适合我的需求。
-
Idle_Mind - 非常不错的应用程序,干得好!谢谢!
标签: c# arrays rectangles