Получение двумерных позиций массива из целого числа

#java #math #multidimensional-array #processing #pixel

#java #математика #многомерный массив #обработка #пиксель

Вопрос:

Я загружаю пиксели из изображения. для каждого пикселя я проверяю цвет и создаю изображение, теперь я хочу добавить это изображение внутрь двумерного массива.

 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;
  

}

Однако это не возвращает мне столбец внутри моей строки, и я не уверен, будет ли это работать вообще и как продолжить движение вперед.

Комментарии:

1. PImage image вообще не используется.

2. Не уверен, что вы спрашиваете, но каково значение MAPWIDTH ,

3. Предположим, у вас есть большая таблица со строками и столбцами, но вы знаете только номер строки * столбца, в котором вы находитесь. Мне нужно знать, в какой строке и столбце я нахожусь.

4. Хорошо избавьтесь от материала, который не является частью проблемы, потому что на основе того, что вы закодировали и что вы опубликовали, невозможно угадать, о чем вы спрашиваете. Не пытаюсь быть злым, но не могу помочь в его текущем формате.

5. Я отредактировал свой код, мне нужно знать строку и столбец 2d-массива, поскольку у меня есть только номер позиции пикселя. Я просматриваю каждый пиксель изображения и хочу установить каждый пиксель внутри 2d-массива

Ответ №1:

Кажется, вам нужна простая математика деления.

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

Редактировать

Чтобы получить значение x, также используйте modulo

 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);
  

Комментарии:

1. Это не решает мою проблему с осью x. Я думаю, что мой метод divideBy уже выполняет y правильно. Мне нужна переменная x. Если мой метод работает должным образом. И да, это должно быть простое деление, я просто действительно не знаю, что здесь за математика.

2. смотрите мое редактирование, не требуется цикл в divideBy