Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Vitas2   (2003-06-19 16:19) [0]

(OpenGL)Как нарисовать сплайновую поверхность чтобы она проходила через опорные точки?
У меня опорные точки влияют на поверхность но они нележат на поверхности.


 
MBo   (2003-06-19 16:41) [1]

У B-сплайнов (которые, видимо, используются) узлы (опорные точки) и не должны лежать на поверхности (или на кривой в двумерном случае).


 
Aldor   (2003-06-19 21:37) [2]

Если речь идет об интерполяции сплайнами, то кривая как раз должна проходить через узлы. Я не видел разработок трехмерного случая сплайнов.
Для этого нужно знать уравнение формы тонкого гибкого упрогого листа, закрепленного в трех точках при минимальной потенциальной энергии. Кто знает сопромат, напишите сюда.
Для двумерного случая (тонкий упругий стержень) уравнение такой формы d^4(S(x))/dx^4 = 0 (четвертая производная равная нулю). Далее, решая кравевую задачу (значения первой и второй производной здесь известны), получаем сплайны.
Действительно, кто знает сопромат, напишите, буду ОЧЕНЬ, ОЧЕНЬ благодарен.


 
neuro   (2003-06-19 23:56) [3]

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


 
pasha676   (2003-06-20 10:26) [4]


> Как нарисовать сплайновую поверхность чтобы она проходила
> через опорные точки?

насколько я знаю, сплайновая поверхность проходит не через опорные точки, а как бы участки поверхности "притягиваються" к опорным точкам. Пример создания таких поверхностей есть у Краснова.


 
Aldor   (2003-06-20 15:39) [5]

2pasha676
Если речь идет о сплайнах, то есть об интерполировании, то поверхность проходит как раз точно через оборные точки (или кривые).
А то, о чем вы говорите - это кривые Безье.


P.S. - Вы знаете, что такое кривые Безье?
- Шо? Без какого "е"?


 
MBo   (2003-06-20 15:53) [6]

>Aldor
сплайнов разных море. Из простейших, например, сглаживающий не обязан проходить через точки. OpenGL не знаю, но предполагаю, что там используются NURBS - Non-Uniform Rational B-Spline Surfaces.


 
pasha676   (2003-06-20 16:56) [7]


> Если речь идет о сплайнах
> А то, о чем вы говорите - это кривые Безье.

Насколько я понимаю кривые Безье - тоже сплайны. И NURBS - сплайны. Все это сплайны. Вопрос в форме представления. Ну и собственно в том может ли ОпенГЛ оперировать таким представлением сплайнов, где управляющие точки находяться на поверхности.


 
aldor   (2003-06-20 22:40) [8]

Сейчас все что ни попадя, апроксимирующее функции, называют сплайнами. Кривые Безье, например, называют B-Splines. Между тем к сплайнам они отношения не имеют.
Задача построения сплайнов - есть задача интеролирования, то есть апроксимирования функцией, точно проходящей через узлы интерполяции.
Не интерполяция есть построение сплайнов (у сплайнов есть четкое определение), и тем более, не всякая апроксимация есть интерполяция.
Так что называние, например, кривых Безье сплайнами - не более, чем путаница (не правильное использование) терминов.


 
MBo   (2003-06-21 06:48) [9]

>Задача построения сплайнов - есть задача интеролирования
Не совсем так. Сплайны - набор полиномиальных (или рационально-полин.)на каждом отрезке функций, согласованных в узлах по значению и производной (обычно вплоть до n-1 порядка) для обеспечения гладкости. Изначально само название возникло, конечно, для интерполирующих сплайнов - упругая линейка, проходящая через узлы - сопромат, AFAIK, дает для такой системы кубические полиномы, непрерывность в узлах до 2 производной.

>Кривые Безье, например, называют B-Splines
B-сплайны можно описать набором кривых Безье, но это не одно и то же.


 
pasha676   (2003-06-21 09:54) [10]

Сплайн - это кривая. Все остальное - это представление сплайна.
Безье и NURBS суть вещи разные. Если рисовал в Максе, ты это бы здорово прочувствовал на практике.


 
dimodim   (2003-06-21 14:27) [11]

Да а у меня ОПЕНЖИЛ вообще не пашет хотя установлен


 
pasha676   (2003-06-21 15:05) [12]


> ОПЕНЖИЛ вообще не пашет хотя установлен

Интересно, а его что еще и устанавливать надо? Мне что то всегда казалось что он уже давно в выньдосом поставляется. Ну а с Дельфями - заголовочные pas-ы


 
Aldor   (2003-06-21 21:04) [13]

2 MBo

Все верно, сплайны - есть полиномы, имеющие непрерывные производные в узлах интерполяции. Так они изначально были, таковыми и остаются. Только вот термины путать не надо.


 
Vitas2   (2003-06-24 19:41) [14]

Ну и ответы короче скажите как нарисовать поверхность(изогнутую) что бы опорные точки лежали на ней
и это надо при помощи OpenGL а не самому спомощью интерполирования щитать (хотя я знаю как это делается)
NURB и Бизе не подходят там точки влияют на поверхность но они не лежат на ней


 
Aldor   (2003-06-24 19:59) [15]

2 Vitas2
На сколько я знаю (могу ошибаться), в OpenGL таких функций нет. Тут кто-то обещал выслать, но, видно сильно пьяный был. Хотя я бы очень благодарен был neuro за подобный алгоритм.


 
pasha676   (2003-06-25 14:04) [16]


> NURB и Бизе не подходят там точки влияют на поверхность
> но они не лежат на ней

По правде говоря NURBS тоже по разному реализуется (есть варианты и лежат и не лежат). Как именно в OpenGL не знаю. А вот хорошая идея. Берешь GLScene и смотришь как это реализуется там. Гемора конечно много. Но там вроде именно точки лежат на поверхности.


 
Sapersky_   (2003-06-27 15:53) [17]

как нарисовать поверхность(изогнутую) что бы опорные точки лежали на ней и это надо при помощи OpenGL а не самому спомощью интерполирования щитать (хотя я знаю как это делается)

Как говорится, не понял... Если знаешь как, то и шшытай :). И выводи с помощью OpenGL.
Или нужно с аппаратным ускорением (ATI TrueForm и все дела)? Тогда не знаю, есть, наверное, какое-то расширение (эй, знатоки OpenGL!)...

Хотя я бы очень благодарен был neuro за подобный алгоритм.

Может быть он, судя по нику :), имел в виду нейросети? Это, конечно, порядочное извращение (работает медленно, результат приблизителен), но зато без проблем интерполирует поверхности, заданные нерегулярной сеткой - и триангуляцию делать не надо. Относительно регулярной сетки - её можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом. Математически не совсем корректно, но выглядит правдоподобно.
Примеры того и другого у меня есть (вывод через Direct3D).


 
Aldor   (2003-06-27 22:13) [18]

2 Sapersky_
можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом
Это, простите, в целях повышения образованности, как понимать?


 
Sapersky_   (2003-06-27 23:49) [19]

можно интерполировать обычными двухмерными сплайнами, сначала в одном направлении, потом в другом
Это, простите, в целях повышения образованности, как понимать?


Во-первых, определимся, чтобы не путаться, что такое регулярная сетка. Это двухмерный массив вершин, лежащий, например, в плоскости 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


 
Vitas2   (2003-07-04 09:23) [20]

так что никто незнает? только в теории?


 
pasha676   (2003-07-04 09:26) [21]


> так что никто незнает? только в теории?

Еще раз. У Краснова в книжке был пример. Посмотри его, может подойдет.


 
Vitas2   (2003-07-07 09:41) [22]

> так что никто незнает? только в теории?
>Еще раз. У Краснова в книжке был пример. Посмотри его, может >подойдет.
еще раз повторяю там опорные точки не лежат на поверхности



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.007 c
3-72684
Паша_
2003-12-24 20:43
2004.01.23
Удалить удаленное...


1-72743
Jul
2004-01-09 18:31
2004.01.23
SLib dlja Delphi 5.0


3-72664
int64
2003-12-25 16:43
2004.01.23
Деревья, Delphi и MSSQL.


8-72847
Jonson
2003-09-20 10:03
2004.01.23
OpenGL в Delphi


11-72694
Igit
2003-05-09 13:45
2004.01.23
ChangeDisplaySettings не работает...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский