Мне определили объект в мировых координатах, говорю круг, центрируемый в (2,3) с радиусом 4. Если я хочу, чтобы круг не был искажен, был совершенно видимым в области просмотра и был максимально большим в области просмотра, как может я формулировать команду gluOrtho2D для создания мира, оконного на вышеупомянутых спецификациях, учитывая, что:
glViewport(20, 30, 1000, 500)?
Я запутываюсь с целой областью просмотра по сравнению с миром по сравнению с экраном, и т.д. координаты. Кто-то может обойти меня через него? Я действительно хочу приобрести навык этого.
В вашем примере просмотра составляет 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 не должны будут изменяться.