gluOrtho2D и glViewport

Мне определили объект в мировых координатах, говорю круг, центрируемый в (2,3) с радиусом 4. Если я хочу, чтобы круг не был искажен, был совершенно видимым в области просмотра и был максимально большим в области просмотра, как может я формулировать команду gluOrtho2D для создания мира, оконного на вышеупомянутых спецификациях, учитывая, что:

glViewport(20, 30, 1000, 500)?

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

13
задан genpfault 21 April 2012 в 05:23
поделиться

1 ответ

В вашем примере просмотра составляет 1000 пикселей на 500 пикселей высокими. Таким образом, вам необходимо указать координаты Glarho, которые имеют одинаковое соотношение сторон (2: 1).

Ваш круг - 4 единицы в радиусе, поэтому вам понадобится представление, которое составляет 8 единиц высотой на 8 единиц шириной по крайней мере. Учитывая соотношение сторон 2: 1, давайте сделаем эти 16 единиц шириной 8 единиц высоко.

Центр находится в (2, 3). Так что центрируйте эти 16 х 8 вокруг, что вы должны получить:

glOrtho2D (2 - 8, 2 + 8, 3 - 4, 3 + 4);

то есть:

glOrtho2D (-6, 10, -1, 7);

Это эффективно отображает координату X -6 на левый край просмотра. Затем отображение Glviewport затем отображает это на фактическое местоположение на экране. В качестве размера экрана изменяется, вы должны настроить координаты Glourtho2D, чтобы компенсировать соотношение сторон, но до тех пор, пока Viewport составляет 2: 1, эти вызовы GLORTHO2D не должны будут изменяться.

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

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