【问题标题】:Translate a 2D coordinate into a 1D array将二维坐标转换为一维数组
【发布时间】:2018-06-24 11:03:50
【问题描述】:

我也看过:

Convert a 2D array index into a 1D index

我正在尝试调试我的程序,我需要了解如何将二维坐标转换为一维坐标。

如果我有一个 IJ 坐标,例如:(3284,1352),我们想访问一个一维数组,即 (3492,2188),我们如何实现呢?

到目前为止我已经尝试过:

1) 我认为你对每一行和每一行内每一列的偏移为:

i x j = 3284 * 1352 = 4.439.968

如果我们有坐标 (3284,1352) 以图形方式对应于灰度强度为 1 的片段:

我们尝试访问每个像素的灰度值的一维数组,以像素为单位:4.439.968 我们有:

14 的灰度强度

这很奇怪,因为:

-> ITKSnap 没有显示第 14 段:

-> 我们的段的灰度为1,那么我们应该在手动计算访问哪个索引后,找到那个灰度:

2)我尝试的第二种方法是将其计算为:

column clicked * number of total rows + row clicked;

j * xLength + i;

在我们的例子中是:

1352 * 3492 + 3284 = 4.724.468

如果我们试图在数据中找到那个像素:

我们发现灰度为0,对应背景。

转换有什么问题?

你能帮帮我吗?

【问题讨论】:

  • 我认为应该是:row clicked * number of total columns + column clicked;,因为它通常先经过列然后再经过行(从左到右然后从上到下)。

标签: javascript arrays coordinates


【解决方案1】:

我认为你需要这样的东西:index = (y * maxColumns) + x
(看起来像你的 j=x 和 i=y)

我画了一些东西来可视化它:

【讨论】:

  • 我认为没有必要拨打Math.round。都是整数运算,对吧?
  • 是的,你说得对,我只是从一个项目中复制出来的,在该项目中我使用Math.sqrt 计算总列数。 (而且我最近在尝试访问具有浮点值的数组时遇到了问题,因为 JS 中没有 int,所以我现在到处都放一个 Math.round ;D)
猜你喜欢
  • 2019-10-21
  • 2021-06-28
  • 2020-03-26
  • 2016-02-18
  • 2018-02-19
相关资源
最近更新 更多