【发布时间】:2013-06-03 21:40:43
【问题描述】:
我根本不熟悉坐标系或处理这些事情的大部分数学。我想要做的是取一个点(x,y),并在一维数组中找到它的位置,使其遵循:
(0,2)->0 (1,2)->1 (2,2)->2
(0,1)->4 (1,1)->5 (2,1)->6
(0,0)->8 (1,0)->9 (2,0)->10
箭头表示坐标应映射到的值。请注意,在每一行之后都会跳过一个索引。我认为它最终会成为一个相当微不足道的解决方案,但我找不到任何类似的问题,而且我自己也没有任何运气提出想法。我确实知道二维数组的宽度和高度。感谢您的帮助!
我的问题可能含糊不清或使用了错误的术语,我深表歉意。
我知道坐标 (0,0) 将是左下角的位置。我也知道左上角坐标应该放在索引 0 处。每个新行都会跳过一个索引 1。坐标系的大小各不相同,但我知道行数和列数。
【问题讨论】:
-
映射通常需要地图。你可以使用
Map<Integer, Point>。 -
@Dukeling:可能。我还没有真正理解这个问题......
-
不要认为映射是必要的,他需要知道映射在数学上是如何发生的(得到一个函数),映射更多的是用于存储(如果需要)他只想要索引。致 OP:索引 7 和 3 发生了什么?
-
看来您可能需要一个映射以下内容的通用函数:
(0,n-1)->0, (1,n-1)->1, ..., (n-1,n-1)->n-1, (0, n-2)->n+1, (1, n-2)->n+2, ...。这个对吗? (在你的例子中 n = 3) -
@arynaq 这是代表字符值的映射坐标点,所以我有那些索引为 toString() 方法保存换行符
标签: java arrays algorithm coordinates