![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
нарисовать трубу в OpenGL по точкам
crytogen © (2007-03-29 14:30:00)мне необходимо нарисовать трубу в OpenGL по имеющимся точкам. точки образуют отрезки-оси цилиндров. как это сделать?
Denis_ (2007-09-29 16:27:00) [1]А больше ничего не надо? А то я уж бегу просить мастеров написать тебе код.
балюн (2007-09-24 14:49:00) [2]Добрый день.
Аналогичная проблема. при изгибе трубы цилиндр вращается по собственной оси в итоге невозможно сшить предыдущий кусок трубы с текущим.
Буду благодарен за помощь в решении , наилучший вариант это код который рисует трубу без данной проблемы
crytogen (2007-04-03 08:53:00) [3]тему можно закрывать.
crytogen (2007-04-03 08:52:00) [4]Всё спасибо разобрался. Помог базис Френе.
crytogen (2007-03-30 11:43:00) [5]Это конечно не цилиндр уже, но всё же
crytogen (2007-03-30 11:42:00) [6]Проблема вот в чём - один из вариантов поворота сделал и сам, но цилиндр вращается вокруг своей оси и я не могу просто составить список точек и нарисовать по прямоугольным сегментам цилиндры ибо они хотя бы слегка да разворачиваются, а при серьёзном изгибе так вообще.
Rial (2007-03-30 00:34:00) [7]> glBegin(gl_Triangles);
> glVertex3f(0, 0, 0);
> glVertex3f(0, 1, 0);
> glVertex3f(0, 1, 1);
> glEnd;
Великолепные получатся циллиндры ;)
> [1] crytogen (29.03.07 14:49)
> т.е. как рисовать цилиндры в принципе понятно. как правильно
> их развернуть и состыковать?
У тебя есть по сути трехмерный отрезок, я правильно понял ?
Находи угол его поворота относительно осей координат.
A(X, Y, Z) получается из (1, 0, 0) повопротом по 2м осям
с корректировкой длины.
L1 = ArcTg(Y / X);
Теперь поворачиваешь координаты X и Y на (-L1), у тебя будет
что то типа A1(X1, Y1, Z). Тогда
L2 = ArcTg(Z / Y1);
Идея, думаю ясна...
А состыковка... ну тут нудно во-первых уточнить,
как ее делать. По биссектрисе, скруглением, или еще как.
Но в любом случае циллиндру придется рисовать самому
с помощью примититвов.
Nic (ro) (2007-03-29 23:13:00) [8]glBegin(gl_Triangles);
glVertex3f(0, 0, 0);
glVertex3f(0, 1, 0);
glVertex3f(0, 1, 1);
glEnd;
То бишь по полигонам.
crytogen (2007-03-29 14:49:00) [9]т.е. как рисовать цилиндры в принципе понятно. как правильно их развернуть и состыковать?