![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
(OpenGL)Как нарисовать сплайн
Vitas2 © (2003-06-19 16:19:00)
(OpenGL)Как нарисовать сплайновую поверхность чтобы она проходила через опорные точки?
У меня опорные точки влияют на поверхность но они нележат на поверхности.
Vitas2 (2003-07-07 09:41:00) [1]
> так что никто незнает? только в теории?
>Еще раз. У Краснова в книжке был пример. Посмотри его, может >подойдет.
еще раз повторяю там опорные точки не лежат на поверхности
pasha676 (2003-07-04 09:26:00) [2]
> так что никто незнает? только в теории?
Еще раз. У Краснова в книжке был пример. Посмотри его, может подойдет.
Vitas2 (2003-07-04 09:23:00) [3]
так что никто незнает? только в теории?
Sapersky_ (2003-06-27 23:49:00) [4]
можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом
Это, простите, в целях повышения образованности, как понимать?
Во-первых, определимся, чтобы не путаться, что такое регулярная сетка. Это двухмерный массив вершин, лежащий, например, в плоскости xy, т.е. расстояния между вершинами по осям x и y одинаковы и задаются для всего массива. Значение элемента массива определяет смещение вершины вдоль оси z.
Вид сверху (X - исходные данные, 0 - элементы, которые надо интерполировать)
X000X000X
000000000
000000000
X000X000X
000000000
000000000
X000X000X
Сначала делаем интерполяцию по строкам, для каждой строки отдельно (T - интерполированные данные, показаны для двух строк):
XTTTXTTTX
000000000
000000000
XTTTXTTTX
000000000
000000000
X000X000X
Затем по столбцам, опять же отдельно для каждого. Причём в качестве столбцов берутся, кроме собственно исходных, полученные на предыдущем этапе данные, т.е. столбцов в данном случае будет не 3, а 9 (показано для 7 столбцов):
XTTTXTTTX
TTTTTTT00
TTTTTTT00
XTTTXTTTX
TTTTTTT00
TTTTTTT00
XTTTXTTTX
Aldor (2003-06-27 22:13:00) [5]
2 Sapersky_
можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом
Это, простите, в целях повышения образованности, как понимать?
Sapersky_ (2003-06-27 15:53:00) [6]
как нарисовать поверхность(изогнутую) что бы опорные точки лежали на ней и это надо при помощи OpenGL а не самому спомощью интерполирования щитать (хотя я знаю как это делается)
Как говорится, не понял... Если знаешь как, то и шшытай :). И выводи с помощью OpenGL.
Или нужно с аппаратным ускорением (ATI TrueForm и все дела)? Тогда не знаю, есть, наверное, какое-то расширение (эй, знатоки OpenGL!)...
Хотя я бы очень благодарен был neuro за подобный алгоритм.
Может быть он, судя по нику :), имел в виду нейросети? Это, конечно, порядочное извращение (работает медленно, результат приблизителен), но зато без проблем интерполирует поверхности, заданные нерегулярной сеткой - и триангуляцию делать не надо. Относительно регулярной сетки - её можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом. Математически не совсем корректно, но выглядит правдоподобно.
Примеры того и другого у меня есть (вывод через Direct3D).
pasha676 (2003-06-25 14:04:00) [7]
> NURB и Бизе не подходят там точки влияют на поверхность
> но они не лежат на ней
По правде говоря NURBS тоже по разному реализуется (есть варианты и лежат и не лежат). Как именно в OpenGL не знаю. А вот хорошая идея. Берешь GLScene и смотришь как это реализуется там. Гемора конечно много. Но там вроде именно точки лежат на поверхности.
Aldor (2003-06-24 19:59:00) [8]
2 Vitas2
На сколько я знаю (могу ошибаться), в OpenGL таких функций нет. Тут кто-то обещал выслать, но, видно сильно пьяный был. Хотя я бы очень благодарен был neuro за подобный алгоритм.
Vitas2 (2003-06-24 19:41:00) [9]
Ну и ответы короче скажите как нарисовать поверхность(изогнутую) что бы опорные точки лежали на ней
и это надо при помощи OpenGL а не самому спомощью интерполирования щитать (хотя я знаю как это делается)
NURB и Бизе не подходят там точки влияют на поверхность но они не лежат на ней
Aldor (2003-06-21 21:04:00) [10]
2 MBo
Все верно, сплайны - есть полиномы, имеющие непрерывные производные в узлах интерполяции. Так они изначально были, таковыми и остаются. Только вот термины путать не надо.
pasha676 (2003-06-21 15:05:00) [11]
> ОПЕНЖИЛ вообще не пашет хотя установлен
Интересно, а его что еще и устанавливать надо? Мне что то всегда казалось что он уже давно в выньдосом поставляется. Ну а с Дельфями - заголовочные pas-ы
dimodim (2003-06-21 14:27:00) [12]
Да а у меня ОПЕНЖИЛ вообще не пашет хотя установлен
pasha676 (2003-06-21 09:54:00) [13]
Сплайн - это кривая. Все остальное - это представление сплайна.
Безье и NURBS суть вещи разные. Если рисовал в Максе, ты это бы здорово прочувствовал на практике.
MBo (2003-06-21 06:48:00) [14]
>Задача построения сплайнов - есть задача интеролирования
Не совсем так. Сплайны - набор полиномиальных (или рационально-полин.)на каждом отрезке функций, согласованных в узлах по значению и производной (обычно вплоть до n-1 порядка) для обеспечения гладкости. Изначально само название возникло, конечно, для интерполирующих сплайнов - упругая линейка, проходящая через узлы - сопромат, AFAIK, дает для такой системы кубические полиномы, непрерывность в узлах до 2 производной.
>Кривые Безье, например, называют B-Splines
B-сплайны можно описать набором кривых Безье, но это не одно и то же.
aldor (2003-06-20 22:40:00) [15]
Сейчас все что ни попадя, апроксимирующее функции, называют сплайнами. Кривые Безье, например, называют B-Splines. Между тем к сплайнамони отношения не имеют.
Задача построения сплайнов - есть задача интеролирования, то есть апроксимирования функцией, точно проходящей через узлы интерполяции.
Не интерполяция есть построение сплайнов (у сплайнов есть четкое определение), и тем более, не всякая апроксимация есть интерполяция.
Так что называние, например, кривых Безье сплайнами - не более, чем путаница (не правильное использование) терминов.
pasha676 (2003-06-20 16:56:00) [16]
> Если речь идет о сплайнах
> А то, о чем вы говорите - это кривые Безье.
Насколько я понимаю кривые Безье - тоже сплайны. И NURBS - сплайны. Все это сплайны. Вопрос в форме представления. Ну и собственно в том может ли ОпенГЛ оперировать таким представлением сплайнов, где управляющие точки находяться на поверхности.
MBo (2003-06-20 15:53:00) [17]
>Aldor
сплайнов разных море. Из простейших, например, сглаживающий не обязан проходить через точки. OpenGL не знаю, но предполагаю, что там используются NURBS - Non-Uniform Rational B-Spline Surfaces.
Aldor (2003-06-20 15:39:00) [18]
2pasha676
Если речь идет о сплайнах, то есть об интерполировании, то поверхность проходит как раз точно через оборные точки (или кривые).
А то, о чем вы говорите - это кривые Безье.
P.S. - Вы знаете, что такое кривые Безье?
- Шо? Без какого "е"?
pasha676 (2003-06-20 10:26:00) [19]
> Как нарисовать сплайновую поверхность чтобы она проходила
> через опорные точки?
насколько я знаю, сплайновая поверхность проходит не через опорные точки, а как бы участки поверхности "притягиваються" к опорным точкам. Пример создания таких поверхностей есть у Краснова.
neuro (2003-06-19 23:56:00) [20]
У меня есть ответ на ваш вопрос =). Только я выпимши -- посему вломак много умностей писать. Пишите на мыло, протрезвею - отвечу =).