Рисовать кубические кривые Безье в ActionScript?

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

var startPoint:Point = new Point(0, 0);
var endPoint:Point = new Point(5, 5);
var control1:Point = new Point(5, 0);
var control2:Point = new Point(0, 5);

var myBezier:Sprite = getBezier(startPoint, control1, control2, endPoint);

Для повышения производительности я планирую иметь около 50 из них на сцене одновременно.


person Ender    schedule 14.07.2010    source источник
comment
Эта страница содержит версию Python cubicToQuadratic. быть трудным для перевода.   -  person Amarghosh    schedule 15.07.2010


Ответы (3)


Примечание. Flash Player 11 и более поздних версий включает встроенный метод рисования кубических кривых, cubicCurveTo(), который должен быть самым быстрым методом, если вы ориентируетесь на FP11.

Буквально на прошлой неделе я написал класс для рисования кривых Безье произвольного порядка.

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

Код здесь, если вы хотите использовать его или посмотреть:

Класс BezierCurve

Пример кода

Я думаю, что с примером кода вы сможете без проблем понять, как его использовать (он довольно прост и несколько прокомментирован); но если у вас возникнут проблемы, спрашивайте!

Не стесняйтесь использовать его по своему усмотрению.

person Juan Pablo Califano    schedule 14.07.2010

Если в этот вызов API встроены квадратичные числа, вам придется достаточно хорошо понимать Безье, чтобы написать собственную кубическую реализацию.

Нравится это.

person duffymo    schedule 14.07.2010

На этом сайте перечислены и объяснены различные способы аппроксимации кубических кривых Безье:
http://timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm

В самом низу он приводит метод с заголовком Подход с фиксированной средней точкой, который использует четыре квадратичные кривые в качестве аппроксимации и кажется лучшим с точки зрения точности и производительности из всех методов.

person cmann    schedule 10.01.2011