【问题标题】:Get twodimensional array positions out of integer从整数中获取二维数组位置
【发布时间】:2020-10-02 09:23:10
【问题描述】:

我正在从图像中加载像素。 对于我检查颜色并创建图像的每个像素,我现在想将此图像添加到二维数组中。

int MAPWIDTH = 64; // in pixels
int MAPHEIGHT = 16; // in pixel
PImage[][] forGroundMap;

PImage file = loadImage(path);


file.loadPixels();
   
   int size = file.width * file.height;
   
   for (int i = 0; i < size; i++) {

    int y = divideBy(i, MAPWIDTH);

    //forGroundMap[y][x] == something what is x and y here
   }

供参考:图像始终为 64 高和 32 宽。

为了获得位置,我尝试将当前迭代除以宽度,以了解我当前所在的行。

int divideBy(int number, int timesIn) {
int count = 0;

while (number >= timesIn) {
    number = number - timesIn;
    count++;
    println(number);
}

return count;

}

但是,这并没有将我的行内的列归还给我,而且我不确定这是否会起作用以及如何继续前进。

【问题讨论】:

  • PImage image 根本没有被使用。
  • 不确定你在问什么,但MAPWIDTH的值是什么,
  • 假设您有一个包含行和列的大表,但您只知道所在行 * 列的编号。我需要知道我在哪一行和哪一列。
  • 好吧,摆脱不属于问题的内容,因为根据您的编码和发布的内容,不可能猜出您在问什么。不想刻薄,但不能以目前的格式提供帮助。
  • 我编辑了我的代码,我需要知道二维数组的行和列,因为我只有一些像素位置。我遍历图像中的每个像素,我想将每个像素设置在 2d 数组中

标签: java math multidimensional-array processing pixel


【解决方案1】:

您似乎想要的是简单的除法运算。

int y = 1 / 64;
System.out.println (y);
y = 65 / 64;
System.out.println (y);

编辑

要获得 x 值也可以使用模

int x = 1 / 64;
int y = 1 % 64;
System.out.printf ("you are at [%d,%d]%n", x,y);
x = 65 / 64;
y = 65 % 64;
System.out.printf ("you are at [%d,%d]%n", x,y);

【讨论】:

  • 这并不能解决我的 x 轴问题。我认为我的 divideBy 方法已经正确地完成了 y 。我需要 x 变量。如果我的方法按预期工作。是的,它应该是简单的除法,我真的不知道这里的数学是什么。
  • 查看我的编辑,不需要在divideBy中循环
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多