Просмотр полной версии : Отрисовка полигона
Stitch512
06.01.2012, 13:59
Кто может подсказать ссылку на библиотеку или исходники для отрисовки полигона по набору точек кривой Безье, либо любым другим алгоритмом. Т.е. на основе списка точек необходимо отобразить сглаженный полигон с произвольной заливкой, при этом скорость работы алгоритма имеет значение, т.к. отрисовка производится на каждом кадре.
Заранее спасибо.
Stitch512
06.01.2012, 14:22
Да, естественно это реализуется с помощью класса Graphics, конкретнее с помощью метода curveTo. Вопрос был, собственно, в алгоритме построения опорных точек, чтобы результирующая прямая выглядела как цельная.
так а в чем проблема?
curveTo(...);
curveTo(...);
lineTo(...);
curveTo(...);
Stitch512
06.01.2012, 14:28
Вопрос был, собственно, в алгоритме построения опорных точек, чтобы результирующая прямая выглядела как цельная.
А не в том какие функции использовать для отрисовки.
Какой алгоритм? Или ставьте более конкретную задачу, или вас не понятно.
Если у вас есть координаты для точек, то что мешает их подставить в соответствующие методы?
Stitch512
06.01.2012, 14:37
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#curveTo()
У меня есть список точек через которые должна проходить замкнутая кривая. Если использовать curveTo и в качестве параметров передавать точки из списка, то итоговая прямая не будет проходить через все точки, т.к. один из параметров (controlX, controlY) - опорная точка, которую собственно и нужно строить на каждом шаге итерации с учетом предыдущей и следующей точки, чтобы результирующий полигон был сглаженным без острых выступов.
Добавлено через 1 минуту
Необходим аналог http://silin.su/#AS3/geom/fit но для случая замкнутого контура.
Т.е. проблема в определении этих опорных точек?
Stitch512
06.01.2012, 14:41
Да, по факту нужно на основе списка точек построить список опорных точек для каждой пары.
Почти страница обсуждений для выяснения того, что же действительно необходимо...
Исходя из того что известно и то что требуется, то я бы выбрал примерно следующий алгоритм:
Строим воображаемые линии, содержащие точки интересующего сегмента и примыкающие точки. На месте пересечения этих линий будет наша опорная точка. При необходимости (так сказать определяем степень сглаженности) - приближаем ее (по перпендикуляру) к воображаемому отрезку, образованному точками интересующего сегмента. Если направление относительно этого отрезка не правильное (определяем по углу, образованному этим отрезком и примыкающей точкой), то "зеркалим" положение опорной точки относительно отрезка.
Примерно так.
http://philippe.elsass.me/2009/05/as3-rounding-corners/
Stitch512
06.01.2012, 15:29
Строим воображаемые линии, содержащие точки интересующего сегмента и примыкающие точки.
Это описание решения, чтобы построить эти линии нужно опять же либо вычислить позицию опорной точки, либо углы наклона прямых, что собственно возвращает нас в вопросу как именно это сделать.
...
За ссылку спасибо, но в задаче необходимо чтобы прямая проходила через заданные точки.
Добавлено через 5 минут
Собственно, если кому интересно, из наиболее подходящего нашел http://flashcove.net/795/cubic-spline-generation-in-as3-catmull-rom-curves/. Буду адаптировать под задачу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.