В качестве ответа я предполагаю, что ваше изображение представляет собой проекцию на плоскую поверхность.
Тогда можно построить виртуальную камеру, которая будет видеть ширину / высоту изображения точно в правильном поле зрения. , Чтобы получить расстояние d
между изображением и камерой (в пикселях), можно использовать построенный прямоугольный треугольник:
tan(FOV/2) = width/2 / d
→ d = width/(2tan(FOV/2))
То же самое уравнение должно выполняться для высота.
Аналогичным образом можно рассчитать угол пикселя (при условии, что центр изображения равен (0, 0)
):
tan(angleX) = x/d
→ angleX = arctan(x/d) = arctan(x/width * 2tan(hFov))
tan(angleY) = y/d
→ angleY = arctan(y/d) = arctan(y/width * 2tan(vFov))
В случае, если изображение деформировано, значения d по вертикали и горизонтали могут отличаться, и поэтому вам не следует предварительно вычислять d
.