Я разработал класс С++, который абстрагирует пользователя от поворота, масштабирования и панорамирования трекбола. У меня есть поворот (с использованием трекбола) и масштабирование, как и ожидалось. Однако панорамирование не ведет себя так, как ожидалось. Когда я выбираю точку и перетаскиваю, я ожидаю, что при завершении перетаскивания выбранная точка остается под мышкой. Мое понимание панорамирования в перспективной проекции выглядит следующим образом. Цель и положение камеры, на которые будет влиять операция панорамирования. Целевая точка камеры и положение камеры (глаза) должны быть переведены пропорционально сопротивлению. Соразмерность (может быть не постоянна) должна основываться на глубине z.
Панорамирование прямо в орфографической проекции, но представляет собой проблему в перспективе. Это будет полезно, если можно объяснить математику и деталь реализации OpenGL.