Вращение многоугольника OpenGl - PullRequest
3 голосов
/ 17 февраля 2012

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

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

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

2 голосов
/ 17 февраля 2012

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

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

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

На самом деле, это рекомендуемый способ сделать это. Помните: OpenGL - это всего лишь ваш инструмент для рисования, а не набор инструментов для 3D-рендеринга, симуляции, движка, математики, геометрии.

...