Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сплайны Безье - кубические в квадратичные...


wicked ©   (2005-11-14 00:01:00) 

каким способом разбить одну кубическую кривую Безье на 2 (3, больше?) квадратичных?....
заранее спасибо за любую полезную информацию.... ;)


wicked   (2005-11-30 18:17:00) [1]

а вот, что искалось....... с достаточными выкладками и примерами..... да и предметная область та, что нужно:
http://www.timotheegroleau.com/Flash/articles/cubic_bezier_in_flash.htm


wicked   (2005-11-25 19:02:00) [2]

ссылки по теме:
http://stevehollasch.com/cgindex/curves/cbez-quadspline.html
http://www.flashkit.com/board/archive/index.php/t-106254.html

ЗЫ в второй прочел только пару первых постингов.... но она ссылается на первую.... :)


wicked   (2005-11-14 01:20:00) [3]

угу, спасибо.... будем пробовать....


MBo   (2005-11-14 00:43:00) [4]

Понятно, что нельзя точно аппроксимировать исходную кубическую кривую несколькими кривыми второй степени (если только она изначально не была квадратичной).
Нужно выработать подходящий для твоего приложения критерий качества аппроксимации, и из него исходить.
Таким образом, оцениваешь отклонение при приближении одной квадр. кривой. Если плохо - делишь кубическую пополам (а если особенность cusp есть, то лучше по ней), и так далее.

Например, можно попробовать так:
Q - контр. точки квадратичной кривой, P - кубической, представляющей ту же самую Q, R - исходной кубической.
повышение степени квадрат-куб:
P0=Q0
P1=1/3*Q0+2/3*Q1
P2=2/3*Q1+1/3*Q2
P3=Q2

Если конечные точки взять совпадающими, то неизвестной останется только Q1
Запишем Q в виде кубической кривой P, составим разность
D=R-P, эта разность тоже является кубической кривой, и найдем минимум максимального удаления D от нуля в зависимости от двух переменных Q1.X и Q1.Y.

Другой вариант - порезать R на куски без особенностей, петель, и с не слишком большой кривизной, затем побогнать каждый кусок квадратичной кривой по конечным точкам и производной в них.

Если покопаться в comp.graphics.algorithms, то Dave Eberly писал там об аппроксимации с исп. метода наименьших квадратов (поиск по bezier degree reduction)


Наверх

Титульная страница Поиск, карта сайта Написать письмо