#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