Для проекта я пытаюсь нарисовать кривые Безье. Теперь я создал свой собственный класс BezierCurve
, который вычисляет точки через forward differencing. В настоящее время я рисую кривую, рисуя Line2D.Double
между каждыми двумя точками. Это мой текущий вывод;Рисунок кривой Безье
Верхняя кривая (1) является один я нарисовал с моей BezierCurve
класса. Нижняя кривая (2) представляет собой ту же кривую Безье, сдвинутую вниз и нарисованную объектом GeneralPath
(с использованием метода curveTo
).
Теперь я не могу не заметить, что (2) выглядит намного плавнее, чем (1) Конечно, я мог бы использовать GeneralPath
(или CubicCurve2D.Double
) сам, но так как это для проекта, это не вариант.
Теперь, мой вопрос: есть ли что-нибудь, что я могу сделать, чтобы кривая выглядела более гладкой? Я попробовал просто увеличить количество очков и использовать fillRect(), но они не показывают улучшения.
Сделать точки тарифа от каждого в какой-то фактор (например, 10) – MaxZoom
Рассмотрим делать свой собственный [анти-aliazing] (Http: //en.wikipedia. org/wiki/Anti-aliasing), что потребует достойного понимания алгоритмов антиалиасинга и создания графики. –
@ControlAltDel: Я прошу отличить. Учитывая его ограничения, которые находятся вне его контроля, решение далеко не тривиально. –