Я пытаюсь создать 3d трубу вдоль сплайна.У меня есть координаты сплайна (x1, y1, z1 - x2, y2, z2 - и т. Д.), Которые вы можете видеть на рисунке желтым цветом.В этих точках мне нужно создать круги, вершины которых нужно соединить на более позднем стадионе.Круги должны быть перпендикулярны «углам» двух отрезков линии сплайна, чтобы сформировать правильную трубу.Обратите внимание, что сегменты поддерживаются на низком уровне для иллюстрации.
[очевидно, я не могу публиковать изображения, поэтому просмотрите изображение по этой ссылке] http://img191.imageshack.us/img191/6863/18720019.jpg
Я дошел довозможность вычислять вершины каждого кольца в каждой точке сплайна, но все они находятся на одной плоскости, то есть под одним углом.Мне нужно, чтобы они вращались в соответствии с их «ногами» (например, A & B для C).
Я обдумывал это и думал о следующем:
- два отрезка линии можно рассматривать как 2 вектора (на иллюстрации A и B)
- угол (на рисунке C) - это то место, где необходимо вычислить кольцо вершин
- Мне нужнонайти планар, на котором будут находиться все вершины
- Затем я могу использовать этот планар (= вектор?) для вычисления новых векторов из центральной точки, которая является C
- , и найти их x, y, z, используя радиус * sin и cos
Однако, я действительно запутался в математической части этого.Я читал о скалярном произведении, но он возвращает скаляр, который я не знаю, как применить в этом случае.
Может ли кто-нибудь указать мне правильное направление?
[править] Чтобы датьнемного больше информации о ситуации:
Мне нужно создать буфер с плавающей точкой, который в группах по 3 описывает позиции вершин и будет связан с OpenGL ES, учитывая еще один буфер с индексами для формирования полигонов.
Чтобы придать форму трубе, я сначала создал массив поплавков, которые в группах по 3 описывают контрольные точки в трехмерном пространстве.
Затем вместе с переменной плотности сегментов,Я передаю эти контрольные точки функции, которая использует эти контрольные точки для создания сплайна CatmullRom и возвращает его в виде другого массива с плавающей точкой, который - в группах по 3 - описывает вершины сплайна Catmull rom.
На каждой из этих вершин я хочу создать кольцо вершин, которое также может различаться по плотности (количество гладкости / вершин на кольцо).
Все прежние вершины (контрольные точки и точки, описывающие сплайны рома) отбрасываются.
Только те вершины, которые образуют кольца труб, будут переданы в OpenGL, который, в свою очередь, соединит те, чтобы сформировать окончательныетруба.
Я настолько же способен создать сплайн catmullrom и создать кольца в положении его вершин, однако все они находятся на планарах, которые находятся под тем же углом, вместо того, чтобы следоватьпуть сплайнов.
[/ edit]
Спасибо!