Алгоритм Брезенхэма

Возможный дубликат:
как с помощью Bresenham создать линию произвольной толщины?

Как я могу использовать алгоритм Брезенхема для рисования линий толщиной более пикселя? Должен ли я запускать алгоритм много раз со смещением от x и y?


person JustCurious    schedule 01.05.2011    source источник


Ответы (2)


Одна вещь, которую вы можете сделать, это вычислить, используя наклон линии, смещение на единицу в обоих ортогональных направлениях. Умножьте это на свою толщину и возьмите смещения в обеих конечных точках. Теперь у вас есть границы повернутого прямоугольника. Затем, вместо того, чтобы использовать Bresenham для рисования линии, используйте быструю заливку полигона.

person Kevin Hsu    schedule 01.05.2011
comment
Ну, заливка полигона, скорее всего, тоже с использованием Bresenham ;) - person Lucero; 02.05.2011
comment
Ах, правда, когда он ходит по краям :) - person Kevin Hsu; 02.05.2011

Нет, самый простой способ — просто нарисовать трафарет в каждом месте (x, y), созданном алгоритмом, который больше одного пикселя, например. диск.

Но это, конечно, неэффективно в том смысле, что вы рисуете один и тот же пиксель много раз. Однако его легко реализовать, и он надежно работает даже с трафаретами необычной формы или разноцветными.

person Antti Huima    schedule 01.05.2011
comment
Да, но (а) трафареты нестандартной формы не являются проблемой (б) вид прозрачности — все портит (если вы не хотите также ввести промежуточный слой) - person sehe; 02.05.2011