1.公式推导
设光屏与视点的距离为L,光屏宽度为width,光屏长度为length,由三角函数可推出以下公式:
即得:
2.C++实现转换代码
//水平FOV和垂直FOV转换
float fov_exchange(float fov, int width, int length, bool cur_flag) {
if (cur_flag == VERTICAL_FOV)
return 2 * ::atan((float(length) * ::tan(fov / 2)) / float(width));
else if (cur_flag == HORIZONTAL_FOV)
return 2 * ::atan((float(width) * ::tan(fov / 2)) / float(length));
}