2012-02-17 4 views
3

Я пытаюсь реализовать движущийся и вращающийся многоугольник в OpenGl и C++.
Движение и вращение вдоль плоскости XZ (только 2D-преобразования).
Полигон определяется центральной точкой и множеством вершин, координаты которых сохраняются как смещения от центральной точки.
Полигон перемещается на основе нажатия клавиши пользователя в направлении X или Z, просто добавляя перемещенное расстояние к центральной точке и обновляя вершины, добавляя значения смещения в центральные координаты.
Вращение относительно центральной точки реализовано с помощью функции glRotatef().
Но мне нужно знать координаты вершин для расчетов обнаружения столкновений. Есть ли вероятность получить только вершинные координаты преобразованного многоугольника без выполнения операций с матрицей?Вращение многоугольника OpenGl

ответ

2

Есть ли шанс, просто извлекая координаты вершин преобразованного многоугольника ...

OpenGL не математическая библиотека. Это предназначено только для рисования. Также функции матричной манипуляции с фиксированной функцией OpenGL устарели и были удалены из ядра OpenGL-3 и далее.

без выполнения операций с матрицами самостоятельно?

Фактически, это рекомендуемый способ сделать это. Помните: OpenGL - это ваш инструмент рисования, а не инструмент 3D-рендеринга-игры-моделирования-engine-math-geometry-toolkit.

+0

Спасибо. Это было действительно полезно. – itsraining

2

Функция glRotatef создает матрицу, которая умножается на текущую матрицу, существующую в стеке, чтобы получить поворот на экране. Даже если бы вы могли получить эту матрицу, вам все равно придется умножить ее на ваши векторы, чтобы получить нужные значения, что вам нужно делать, если вы сами делали математику. Как сказал дантенволф, было бы лучше, если бы вы сами создали математическую библиотеку, которая будет выполнять все необходимые вещи, необходимые для манипулирования объектами в мире 2d или 3d.

Смежные вопросы