Проход матрицы по спирали из центра в края node.js

Всем привет!

Задача: найти ближайший к центру пиксель по условиям (за удовлетворение условий отвечает метод checkColor().

Пытаюсь понять, как сделать проход матрицы по спирали, где начальная точка в центре матрицы. Сейчас у меня есть проход по строкам:

let centerX = 600;
let centerY = 600;

let startXPoint = 0;
let startYPoint = 0;
let endXPoint = 1200;
let endYPoint = 1200;

for (let i = startXPoint; i <= endXPoint; i++) {
        for (let j = startYPoint; j <= endYPoint; j++) {
            let {r,g,b} = Jimp.intToRGBA(img.getPixelColor(i, j))
            let colorFound = checkColor(r,g,b);
            if (colorFound) {
                return colorFound;
            }
        }
}

const checkColor = (r,g,b) => {
    for (let colorObj of colors) {
        let name = colorObj.name;

        for (let colorInput of colorObj.inputs) {
            let colorRed = colorInput[0];
            let colorGreen = colorInput[1];
            let colorBlue = colorInput[2];

            if( colorRed === r && colorGreen === g && colorBlue === b) {
                return name;
            }
        }
    }

    return null;
}

Но это занимает много времени, т.к. очень большое кол-во пикселей анализируется "в пустую" (как правило, нужный пискель находится довольно близко к центру).

Буду благодарен за помощь!


Ответы (0 шт):