|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Georgy Udov 2:5030/49.1 17 Jun 2003 17:37:35 To : Burlakov V. Subject : Как отобразить NURBS (В-spline)? --------------------------------------------------------------------------------
Доброе время суток, Burlakov!
Ты писАл to All on Mon, 16 Jun 03 06:47:58 +0400:
BV> Может кто знает (никак не могу найти) как нарисовать NURBS
BV> (разновидность В-Spline) ?
NURBS - это не разновидность, а обобщение B-Spline.
Данная задача решена (мной :)), например, в OpenDWG DWGDirect.
www.opendwg.org
Существует два метода.
1) рекурсивное деление области задания до тех пор, пока не получится
ломаная.
Примерно следующий алгоритм, можно до бесконечности улучшать.
функция ф(параметр а, параметр б)
{
если(точки сплайна с параметрами а, б, (а+б)/2, (а+3б)/4, (3а+б)/4 не
лежат на одной прямой с некоторой априори заданной точностью)
{
ф(а, (а+б)/2);
добавляем точку сплайна с параметром (а+б)/2 в список вершин ломаной
ф((а+б)/2, б);
}
}
Как минимум рекомендуется запускать данный рекурсивный процесс для каждого
узлового промежутка.
2) Разбиение NURBS на последовательность кривых Безье. У меня есть методичка
с этим, в бумажном виде. Посоветовать могу только инет...
Кстати, если ты работаешь с геометрией прямо в AutoCAD, то почему бы не
использовать его реализацию, например, в ObjectARX
OdGeNurbCurve3d::getSamplePoints() ?
Vale, Georgy Udov. E-mail: udovgeorgy#SPAMOFFmail.ru
--- ifmail v.2.15
* Origin: http://news.kaa.ru (2:5030/49.1)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/14947a31bc504.html, оценка из 5, голосов 10
|