Я пытаюсь выяснить, как "рисовать линии в массиве целых чисел" прямо сейчас.я обнаружил, что могу нарисовать линию из одной точки в другую, выполнив следующие действия: найдите ширину и высоту точки 1 и точки 2 (абсолютное значение x1-x2 и y1-y2, разделите ширину на (высоту)-1) и из точки 1 в точку 2, вдоль оси y переместитесь к точке 2 на один шаг, а на оси x с шагом ширины / высоты. Пример:
01000
01000
00100
00100
00010
00001
здесь у меня есть линияот (1,0) как (x, y) до (4,5), если я беру ширину и высоту, я получаю ширину = 3 высоты = 5, если я делю 3/5, я получаю 0,6 и так для каждогоодин шаг по оси Y, я делаю шаг 0,6 вдоль оси X (и получаю результирующее значение, так как мы можем использовать только целые числа в качестве позиций) и получаю координаты
(1,0)
(1.6,1) -> (1,1)
(2.2,2) -> (2,2)
(2.8,3) -> (2,3)
(3.4,4) -> (3,4)
(4,5) -> (4,5)
с этим вамиможно нарисовать эти линии для каждой пары координат многоугольника, используя эту линейную функцию
x = x1 + (|(y1-y)| * ( |(x1-x2)| / |(y1-y2)| ) * sign(x2-x1))
, где x - текущий x каждой итерации, следуя линии вдоль оси y и x1, являющейся вашей начальной позицией x, x2быть в вашей конечной позицииurrent y каждой итерации (конкретный счетчик во время цикла), y1 и y2 соответственно находятся в начальной и конечной позициях y.и подпишите (x2-x1), чтобы выяснить, движетесь ли вы влево или вправо от начальной позиции.
, с этим вы сможете нарисовать контур вашего многоугольника, и, надеюсь, это должнозаполнить его впоследствии станет легче.
Надеюсь, это поможет вам с уважением
РЕДАКТИРОВАТЬ: мы рисуем линии для каждой последовательной пары координат, а не КАЖДОЙ ОДНОЙ пары.Это означает, что если бы вы нарисовали многоугольник из точек p1, p2, p3, p4, p5, вы бы нарисовали линию от p1 до p2, p2 до p3, от p3 до p4, от p4 до p5 и от p5 до p1
, простобыстрый знак