· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› Построение сплайнов (кубический, Безье)

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Дек 25, 2003 05:16:07

Собственно проблема вот в чем:
нужен алгоритм построения сплайна как в AutoCAD, т.е. чтобы он проходил через заданные точки. Точки могут находиться в произвольном положении.

Я откопал алгоритмы интерполяции, но все они имеют недостатки:
1. Многочлены Ньютона и Лагражна - ограниеченное количество точек, возрастающая сетка(значение каждого икса должно быть больше предыдущего)
2. Сплайн Катмулла-Рома - постоянная возрастающая сетка
3. Кубический сплайн - возрастающая сетка
4. В-сплайн, NURBS и т.д. - не проходит через заданные точки

Есть ли у кого-нибудь алгоритмы, примеры или хотя бы полезные ссылки, где это можно найти?


Дата: Дек 25, 2003 05:49:45

STFW. Тебе поможет кубический сплайн. Там нет возрастающей сетки.


Дата: Дек 25, 2003 06:19:54

captain cobalt
В том алгоритме, что я нашел, кубический сплайн работает только с возрастающей сеткой. Если у тебя есть другой, поделись, plz!


Дата: Дек 25, 2003 13:03:08

Toxic
А если представить точки (х,у) как функции времени (x(t), y(t)), а t - время, возрастающий параметр.


Дата: Дек 25, 2003 17:17:28 · Поправил: heXone

Сплайн Эрмита тебе тоже может помочь. В исходнике разберешься сам. calcdiff - вычисление производных
Преимущества:
1)Расположение точек произвольное
2)Для изменения положения не нужно пересчитывать весь сплайн
Недостатки: Разрыв в C2

660915078__lpoly.cpp


Дата: Дек 25, 2003 17:19:18

В догонку. Есть классная книга по сплайнам и не только.
Автор Голованов Н.Н "Геометрическое моделирование". Если где достанешь не пожалеешь


Дата: Дек 25, 2003 20:18:38

heXone
Спасибо, посмотрю.

Так все-таки, в AutoCAD какой сплайн используется?


Дата: Дек 28, 2003 19:26:50

интересно, чем кривая Безье заслужила такую популярность что даже окружности строятся из нескольких кривых и аппаратная поддержка ...


Дата: Дек 29, 2003 01:41:44

Не знаю. Может, скорость?


Дата: Дек 29, 2003 06:20:08

vdk
Toxic
Просто они очень простые в обращении: требуется всего два
направляющих вектора чтобы задать кривую. И с помощью них
можно забацать любую кривую.


Дата: Дек 29, 2003 06:35:03

Sm_Andrei
Это я читал в MSDN. У меня даже где-то был алгоритм построения по четырем точкам. А вот как с n точек?


Дата: Дек 29, 2003 09:32:02

0-3 первая, 4-7 вторая и т.д.


Дата: Дек 29, 2003 17:01:32 · Поправил: Toxic

heXone
Да, да... Это я тоже читал. Но кажется там вот так считается:
кол-во_точек = (3 * количество_кривых) + 1
Но у нее изломы между кривыми


Дата: Дек 29, 2003 18:12:51

скорость наверное. но тогда еще больше не понятно как можно построить растр кривой быстрее чем растр окружности


Дата: Дек 29, 2003 21:41:22

Toxic
Допустим, у тебя такие точки:
A1,A2,A3,A4,A5,A6,A7
Первая кривая: A1,A2,A3,A4
Вторая кривая: A4,A5,A6,A7
Но у нее изломы между кривыми
Если не хочешь чтобы были эти изломы, то у тебя точки A3,A4,A5 должны лежать на одной прямой.
Вот примерчик одной кривой:
управление - (1,2,3,4 изменение координат точек с помощью мыши),(5,6 детализация кривой),(7,8 точками, либо линиями рисовать).
vdk
окружность конечно лучше рисовать не кривой Безье.

1470596526__Bezier.cpp

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.098