Просмотр визуализации усеченного конуса - PullRequest
2 голосов
/ 24 марта 2011

С учетом трехмерного положения камеры, трехмерного целевого положения камеры (точки, на которую указывает камера), расстояния вдали от камеры, поля зрения и соотношения сторон, как я могу рассчитать четыре трехмерные точки дальний самолет? Это должно быть возможно при базовой тригонометрии, но я не получаю точных правильных результатов.

1 Ответ

0 голосов
/ 24 марта 2011

Это может быть базовый триггер в 2D, но проблема немного сложнее в 3D. У меня нет конкретного ответа для вас, но это может дать вам несколько путей для изучения.

Ругли, следующие шаги:

  1. Найти уравнение плоскости изображения
  2. Найти радиус поля зрения
  3. Найти уравнение круга FOV
  4. Найдите четыре точки, лежащие на этом круге, которые соответствуют вашему соотношению сторон

Плоскость, на которой расположен этот круг, может быть получена точкой и вектором нормалей , что позволит вам затем определить уравнение этого круга в 3D (точка, являющаяся местоположением камеры, и вектор - это линия между камерой и целью).

Радиус круга можно определить по соотношению r = d tan(theta / 2), где d - расстояние между камерой и целью, а тета - угол обзора в градусах.

Уравнение этого круга в 3D может быть определено в соответствии с радиусом и вектором нормали.

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

Вам также необходимо подумать, можно ли наклонить камеру или выровнять ее. Это изменит точки, но они все равно будут лежать на одной и той же окружности / плоскости.

В зависимости от вашей цели, это может помочь упростить проблему, если камера всегда находится в точке (0,0,0) и совмещена с одной из осей (т. Е. Цель находится на одной из осей).

...