Как нарисовать сглаженную кривую Безье в растре? - PullRequest
1 голос
/ 27 марта 2012

Кто-нибудь знает достойный алгоритм рисования сглаженных (гладких) квадратичных кривых Безье в растре? Я мог бы просто нарисовать их как векторы, а затем скопировать изображение в растр.

Есть ли какой-нибудь умный, но свободно доступный алгоритм для рисования кривой прямо в пикселях? В настоящее время я использую алгоритм, реализованный здесь: http://www.bytearray.org/?p=67 quadBezier () Мне интересно, есть ли способ изменить его, чтобы сделать сглаженный Безье? Заранее спасибо.

Я делаю это для целей обучения и надеюсь, что это будет быстрее, чем использование копий пикселей из опции Shape. Вот пример, показывающий, что безглаженный Безье работает быстрее, чем обычный Безье: http://lab.generalrelativity.org/raster/

1 Ответ

4 голосов
/ 27 марта 2012

Реализация собственного алгоритма почти наверняка будет медленнее, чем использование bitmapData.draw(shape).

Когда вы используете graphics.lineTo, graphics.curveTo и т. Д., Вы создаете модель, но на самом деле ничего еще не рисуете.Только после того, как фигура добавлена ​​на сцену, и на последующей фазе [render] модель обходит и пиксели рисуются быстрым алгоритмом, написанным на C. Когда вы используете bitmapData.draw, чтобы нарисовать вектор в растровом изображении, онбудет использовать тот же нативный код.Так что это не так, как будто вы рисуете что-то дважды, как вы можете себе представить, и вам будет трудно (или невозможно) выиграть для скорости, внедрив что-нибудь с нуля только в AS3.

...