LINUX.ORG.RU

История изменений

Исправление Norgat, (текущая версия) :

Т.е я так понимаю, центр системы координат лучше располагать в центре окна(виртуального) и от него вести все отсчёты и измерения?

Да, примерно так. Центр координат мировой системы ты фиксируешь и относительно него у тебя производятся все действия со сценой (набором линий и плоскостей). Это позволит довольно просто реализовать сохранение и загрузку сцен из файлов.

Второе, для отображение используется идея Viewport'а (http://ru.wikipedia.org/wiki/Порт_просмотра). Т.е. у тебя есть точка, в мировой системе координат в которой у тебя находится экран и через которую у тебя пользователь будет смотреть на сцену. Центр viewport'а - это центр экрана отображения (там добавится ещё небольшое смещение, но это уже детали реализации).

В результате, можно свести зум к отдалению точки viewport'а, скроллинг к сдвигу viewport'а. Это довольно просто и в бытность студентами такие вещи писали за пару дней. Намного сложнее решить задачи сортировки отображаемых объектов (если не делать, то могут возникать артефакты на картинке) и отсечение невидимых линий(если не делать, то даст просадку по производительности на большой сцене).

P.S. советую найти какой-нибудь курс компьютерной графики на интуите и пройтись по нему. Многие моменты должны проясниться.

Исходная версия Norgat, :

Т.е я так понимаю, центр системы координат лучше располагать в центре окна(виртуального) и от него вести все отсчёты и измерения?

Да, примерно так. Центр координат мировой системы ты фиксируешь и относительно него у тебя производятся все действия со сценой (набором линий и плоскостей). Это позволит довольно просто реализовать сохранение и загрузку сцен из файлов.

Второе, для отображение используется идея Viewport'а (http://ru.wikipedia.org/wiki/Порт_просмотра). Т.е. у тебя есть точка, в мировой системе координат в которой у тебя находится экран и через которую у тебя пользователь будет смотреть на сцену. Центр viewport'а - это центр экрана отображения (там добавится ещё небольшое смещение, но это уже детали реализации).

В результате, можно свести зум к отдалению точки viewport'а, скроллинг к сдвигу viewport'а. Это довольно просто и в бытность студентами такие вещи писали за пару дней. Намного сложнее решить задачи сортировки отображаемых объектов (если не делать, то могут возникать артефакты на картинке) и отсечение невидимых линий(если не делать, то даст просадку по производительности на большой сцене).