Перспективная проекция: определите 2D координаты экрана (x, y) точек в 3D пространстве (x, y, z)

Эффективный способ проверить, является ли число четным, состоит в том, чтобы использовать if ((x & amp; 1) == 0)

14
задан G M 15 August 2019 в 13:41
поделиться

4 ответа

Вот очень общий ответ. Скажите камеру в (Xc, Yc, Zc) и точка, которую Вы хотите спроектировать, P = (X, Y, Z). Расстояние от камеры до 2D плоскости, на которую Вы проектируете, является F (таким образом, уравнение плоскости Z-Zc=F). 2D координаты P, спроектированного на плоскость, (X', Y').

Затем очень просто:

X' = ((X - Xc) * (F/Z)) + Xc

Y' = ((Y - Yc) * (F/Z)) + Yc

Если Ваша камера является источником, то это упрощает до:

X' = X * (F/Z)

Y' = Y * (F/Z)

13
ответ дан 1 December 2019 в 12:53
поделиться

Если просто должен вычислить координаты некоторых точек, необходимо только быть нужны некоторые навыки алгебры, не 3D программирование с openGL.

Кроме того, openGL не имеет дело с Географическими координатами

Сначала получите некоторый документ о WGS84 и геодезических координатах, необходимо сначала преобразовать данные GPS в декартов кадр (например, земля центральный декартов кадр, в котором определяется эллипсоид WGS84).

Затем вычисления с матрицей могут произойти. Цепочка преобразований примерно:

  • WGS84
  • заземлите центральные координаты
  • некоторый локальный кадр
  • кадр камеры
  • 2D проекция

Поскольку первое преобразование видит это, последнее включает матрицу проекции, Другие - только вращения координат и перевод. "Некоторый локальный кадр" является локальным декартовым кадром с источником как Ваша касательная местоположения камеры к эллипсоиду.

2
ответ дан 1 December 2019 в 12:53
поделиться

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

Используя OpenGL, вероятно, сохранил бы Вас большая работа по прокрутке Вашего собственного растрирующего процессора программного обеспечения. Так, я советовал бы пробовать его сначала. Можно моделировать систему на ПК начиная с OpenGL, ES не слишком отличается, пока Вы сохраняете это простым.

4
ответ дан 1 December 2019 в 12:53
поделиться

Я рекомендовал бы "Математику для 3D Игрового Программирования и Компьютерной графики" Eric Lengyel. Это покрывает матрицы, преобразования, представление frustum, перспективную проекцию и т.д.

Существует также хорошая глава в Руководстве по программированию OpenGL (красная книга) на преобразованиях для просмотра и установке камеры (включая то, как использовать gluLookAt).

Если Вы не интересуетесь отображением 3D сцены и ограничены использованием OpenGL ES затем, может быть лучше просто написать Ваш собственный код, чтобы сделать отображение от 3D до 2D проводов окна. Как начальная точка Вы могли загрузить 3D Мезаструктуру, реализация с открытым исходным кодом OpenGL, чтобы видеть, как они реализуют gluPerspective (для установки матрицы проекции), gluLookAt (для установки преобразования камеры) и gluProject (для проектирования 3D точки к 2D проводам окна).

2
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: