在THREE.js中,我们使用以下功能构建摄像头
const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000);
从光学器件中我们知道,摄像机的视野与焦距之间的关系如下:
FOV = arctan(d/2f)
其中FOV
是垂直FOV,以度为单位,d
是图像平面的高度,以毫米为单位,f
是摄像机的焦距,以毫米为单位。
在读完the documentation后,似乎d
默认设置为35mm / aspectRatio
。
我们可以这样表达FOV
FOV = arctan((35/(width/height))/2f) = arctan(filmHeight / 2f)
作为健全性检查,我打印了以下值,以查看是否可以取回75
的输入FOV。
Math.atan(camera.getFilmHeight()/(2 * camera.getFocalLength())) * 180 / Math.PI;
但是..这个值是37.50000000000001
恰好是75
预期焦距的一半。
所以,我想知道我是在某个地方做错了数学运算,还是在误解THREE.js的报告值。