Алгоритм создания изображения эллиптической кисти? - PullRequest
2 голосов
/ 14 марта 2010

Мне нужно иметь возможность принимать эллиптические (вычисленные) параметры кисти, такие как расстояние, твердость, округлость, угол и диаметр, а затем вычислять растровое изображение на основе этих атрибутов.

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

Ответы [ 2 ]

1 голос
/ 15 марта 2010

Это та вещь, для которой вы хотите использовать библиотеку, скорее всего, Java 2D API . Он включает в себя средства для заливки, обводки, преобразования и фильтров. Его модель похожа на многие библиотеки в том, что вы отслеживаете пути с помощью операторов moveTo и lineTo или curveTo, которые абстрагируются в форме, подобные Ellipse2D; а затем вы заполняете или обводите результирующий путь с помощью оператора рисования. Я настоятельно рекомендую прочитать учебник по Java 2D и понять, как различные части сочетаются друг с другом.

Я бы сделал примерно следующие шаги для создания этого чертежа:

  • Вычислить окончательные размеры повернутого эллипса после размытия.
  • Создайте BuferredImage этого размера и вызовите его createGraphics метод для получения контекста рисования.
    • Поворот графического объекта
    • Нарисовать эллипс
    • Заполните черным
  • Реализация фильтра размытия по Гауссу. Это не встроено в API, но оно включает в себя структуру для выполнения фильтров под названием ConvolveOp, и вы можете найти алгоритм для вычисления ядра Гаусса в Java.
  • Примените фильтр к изображению, а затем верните результаты.

Другим вариантом может быть библиотека Apache Batik SVG, поскольку вы можете декларативно выразить желаемый чертеж (включая преобразования и фильтры) и сделать его растеризованным для вас.

0 голосов
/ 04 июля 2010

Чрезвычайно полезный список формул для эллипса можно найти здесь: http://xahlee.org/SpecialPlaneCurves_dir/Ellipse_dir/ellipse.html

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

...