Это может быть базовый триггер в 2D, но проблема немного сложнее в 3D. У меня нет конкретного ответа для вас, но это может дать вам несколько путей для изучения.
Ругли, следующие шаги:
- Найти уравнение плоскости изображения
- Найти радиус поля зрения
- Найти уравнение круга FOV
- Найдите четыре точки, лежащие на этом круге, которые соответствуют вашему соотношению сторон
Плоскость, на которой расположен этот круг, может быть получена точкой и вектором нормалей , что позволит вам затем определить уравнение этого круга в 3D (точка, являющаяся местоположением камеры, и вектор - это линия между камерой и целью).
Радиус круга можно определить по соотношению r = d tan(theta / 2)
, где d - расстояние между камерой и целью, а тета - угол обзора в градусах.
Уравнение этого круга в 3D может быть определено в соответствии с радиусом и вектором нормали.
Наконец, вам нужно найти прямоугольник с заданным соотношением сторон, который может быть вписан в этот круг , ваши четыре точки являются пересечением прямоугольника и круга.
Вам также необходимо подумать, можно ли наклонить камеру или выровнять ее. Это изменит точки, но они все равно будут лежать на одной и той же окружности / плоскости.
В зависимости от вашей цели, это может помочь упростить проблему, если камера всегда находится в точке (0,0,0) и совмещена с одной из осей (т. Е. Цель находится на одной из осей).