Форум: "Игры";
Текущий архив: 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.5 MB
Время: 0.008 c