Вопрос

Я просто не могу понять это в своей голове. Я пытаюсь переместить объект в трехмерном пространстве.

Если у меня есть точка 5,15,5 и я использую функции opengl, чтобы изменить вид модели ....

glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );

Есть ли способ узнать, где находится эта точка (в мировых / глобальных координатах)? Могу ли я сделать какие-то матричные вычисления, которые вернут мне 20,26,23 (или какова будет каждая новая координата)?

Пожалуйста, помогите, я застрял на этом так долго!

Это было полезно?

Решение

Попробуйте сделать следующее:

1) Вставить текущую матрицу в стек; 2) Загрузите личность и примените ваши преобразования; 3) Получите полученную матрицу преобразования в некоторую временную переменную. glGet или что-то подобное поможет; 4) вытолкнуть матрицу из стека;

Теперь у вас есть матрица преобразования. Умножьте свою точку на эту матрицу, чтобы предсказать координаты точки после преобразования.

Другие советы

Обязательно: ознакомьтесь с http: //research.cs.queensu .ca / ~ jstewart / 454 / примечание / трубопровод /

Короче говоря, все эти вызовы сводятся к одной матрице, которая умножается на точку.

Метод SadSido определенно даст вам результирующую матрицу, но это не помешает на самом деле понять, что происходит за кулисами. Вышеуказанные вычисления приведут к следующему уравнению линейной алгебры:

pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn

где mTranslate = переводные вызовы (матрица для перевода) и mRotate = поворотный вызов (матрица для вращения вокруг произвольной оси). Рассчитайте это, и вы готовы!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top