Как узнать размер самолета в единицах? - PullRequest
2 голосов
/ 17 ноября 2011

Дело в том, что я не хочу изображать лабиринты с другой шириной и высотой. Я рисую их в единицах, и мой вопрос заключается в том, как я могу получить видимые размеры плоскости в единицах, чтобы я знал, как глубоко внутри экрана мне придется рисовать лабиринт, чтобы он был полностью виден. Для вида в перспективе я использую ":: gluPerspective (45.0f, (GLfloat) width / (GLfloat) height, 1.0f, 100.0f);"

perspective

Например, как я получаю размеры ближней плоскости (ширину и высоту) в единицах OpenGL или в дальней плоскости или в любой плоскости между этими плоскостями. Если я хочу изобразить что-то полностью видимое, мне нужно знать размеры плоскости в единицах OpenGL или есть другой способ?

1 Ответ

4 голосов
/ 18 ноября 2011

Немного тригонометрии скажет вам, что: h_near = 2*near*tan(fovy/2) и то же самое для дальнего: h_far = 2*far*tan(fovy/2)

Тогда соотношение даст вам ширину.

В качестве «доказательства» просто рассмотрим прямоугольный треугольник, образованный линией обзора, вертикалью плоскости рендеринга и обратно. Длина линии обзора составляет near или far (в зависимости), угол в положении глаза составляет fovy/2 (т.е. половина угла обзора), а вертикаль на плоскости равна h_near/2 или h_far/2 , поскольку мы получаем только половину пути к самолету. Тогда касательная угла на прямоугольном треугольнике равна дальней стороне, разделенной на ближнюю сторону ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...