Используя линейный алгоритм Брезенхэма или аналогичный, чтобы заполнить прямоугольник
Я хотел бы создать заполненный прямоугольник из четырех точек, используя линейный алгоритм Брезенхэма или аналогичный, чтобы получить гладкие стороны. Я наткнулся на этот ответ о переполнении стека [ссылка], который идеально подходит для создания линии между двумя точками. Как я могу использовать / изменить эту функцию, чтобы создать заполненный прямоугольник? Есть ли другой алгоритм, который мог бы лучше соответствовать моим потребностям?
1 ответ
Для произвольно повернутых прямоугольников:
Примечание: это описание следует за реализацией вики Ву с циклом for вдоль оси OX, но более эффективно рисовать края вдоль оси OY и заполнять горизонтальные линии.
Сортировка вершин по X-координате
Сделайте интервалы по горизонтальной оси, разделенной вершинкой
Для каждого интервала выберите верхний и нижний край
Одновременно выполните сглаживающий рисунок У для верхнего и нижнего края
Для верхнего края нарисуйте верхний полупрозрачный пиксель
draw: plot(ipart(intery) , x, rfpart(intery))
и игнорировать нижний пиксель, использовать его положение в качестве начала линии заливки
LineFrom(ipart(intery)+1, x)
Для нижнего края нарисуйте нижний полупрозрачный пиксель и используйте верхний как конец линии заливки.
Повторно инициализируйте рисунок края, когда угол достигнут.