Как определить ширину видимой стороны 3d-рамки от камеры с фиксированным центральным расстоянием? - PullRequest
1 голос
/ 05 января 2011

У меня есть 2,5-мерный видовой экран, в котором я пытаюсь выразить визуализацию глубины прямоугольника с двухмерными линиями под углом 45 градусов внутрь, как если бы у него не было фронта, а вы смотрели внутрь из центральной точки, например:*

-------------
| \_______/ |
| |       | |
| |_______| |
| /       \ |
-------------

Я хочу нарисовать метафору с реальной трехмерной геометрией, в которой расстояние внутреннего прямоугольника от внешнего прямоугольника правильное, учитывая расстояние до камеры (скажем, фиксированное на 2 фута для среднего расстояния до глаз отмонитор пользователя)

Как я могу получить "общую ширину внутренней стороны" из: расстояния по центру камеры, ширины и высоты рамки и глубины, которую я пытаюсь представить?

Спасибо!

1 Ответ

1 голос
/ 05 января 2011

То, что вы ищете, это перспективная проекция . В дополнение к положению камеры и размерам коробки вам также понадобится «экран» где-то между камерой и коробкой, на которую будет проецироваться коробка. Расстояние от камеры до этого экрана будет соответствовать размеру проецируемого окна.

Допустим, камера находится в исходном положении и на z единицах от коробки, экран находится на расстоянии одной единицы от камеры, а на поле были глубина d, ширина 2w и высота 2h .

В трехмерном окружающем пространстве верхний левый угол рамки находится в позиции (-w, h, z). Луч между камерой и этой точкой пересекает проекционный экран на (-w/z, h/z, 1).

Верхний левый угол пола коробки находится в положении (-w, h, z+d), которое проецируется на (-w/(z+d), h/(z+d), 1).

Точно так же вы можете найти позиции других проецируемых точек. Поэтому ширина внешнего поля на экране равна 2w/z, ширина внутреннего поля 2w/(z+d) и аналогично для высот. Таким образом, внутренняя коробка - это всего лишь равномерно масштабированная версия внешней коробки, размеры внутреннего блока которой в 1021 раз больше размеров внешнего блока.

Обратите внимание, что диагонали, соединяющие два прямоугольника, не ориентированы под углом 45 градусов, если квадрат не прямоугольный.

...