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

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

(OpenGL)Как нарисовать сплайн


Страницы:   1 2

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]

У меня есть ответ на ваш вопрос =). Только я выпимши -- посему вломак много умностей писать. Пишите на мыло, протрезвею - отвечу =).


Страницы:   1 2

Наверх

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