Вы не показали объявление go popArray
(а также некоторые другие переменные, которые, как я полагаю, являются целыми числами, которые инициализированы в 0).Вы описываете это как "2D-массив с 3 столбцами".Я предполагаю, что вы объявили его как int[1024][3]
, поэтому в popMap
есть одна строка на строку, затем ваши 3 "столбца", которые предназначены для хранения синего значения, исходной координаты x и исходного yкоординаты.
Итак, во-первых, неясно, как вы собираетесь хранить одну запись в этом массиве для каждого пикселя в исходном изображении.Но, возможно, мое предположение о том, как вы объявили, что это неправильно.
В любом случае, каждый раз, когда вы проходите внутренний цикл, вы, по сути, хотите установить
popArray[currentPixel] = {blueValue, origX, origY}
, но вместо этогоВы назначаете только одно из трех значений каждый раз в цикле.Итак, вы делаете что-то вроде
popArray[0][0] = blueValue //first iteration; blueValue from row 0 col 0
popArray[0][1] = 0 //second iteration; row from row 0 col 1
popArray[0][2] = 2 //third iteration; column from row 0 col 2
Так что, надеюсь, вы уже можете видеть, что что-то не так, поскольку вы заполняете «столбцы», которые должны идти вместе со значениями из разных итераций цикла.Хуже того, вы начинаете перезаписывать эти значения на следующей итерации внутреннего цикла (которая будет повторяться в общей сложности 768 раз до row
приращений):
popArray[0][0] = blueValue // fourth iteration; blueValue from row 0 col 4; overwrite value assigned on first iteration
etc...
Вместо использования 3 «столбцов» массивас различными значениями для хранения этих элементов данных было бы разумно создать класс, который содержит три значения и проясняет, что к чему.popArray
будет содержать этот тип объекта.Кроме того, я бы сделал это List
вместо массива, так как он более гибкий, и вы можете просто вызвать Collections.sort()
в конце;или @jsegal предлагает использовать структуру данных, которая сортируется при вставке элементов.Какой из них лучше, может зависеть от того, что вы хотите сделать с ними позже.