计算相机在平面上可以看到的区域

时间:2012-04-09 00:23:24

标签: language-agnostic geometry

我有一个相机,坐标x,y在高度h,以特定的角度观察x-y平面,具有特定的视野。我想计算相机在飞机上可以看到的4个角。

可能有某种公式,但我似乎无法在谷歌上找到它。

编辑:我应该提一下,我的意思是3D图形意义上的相机。特别是我正在使用XNA。

2 个答案:

答案 0 :(得分:0)

忽略镜头扭曲并假设镜头几乎处于焦点,那么你只需要一个由传感器尺寸和镜头组成的三角形,然后是镜头到主体 - 类似的三角形给你一个主题平面的大小。 / p>

如果您想要一个倾斜的物体平面,它只是垂直物体平面上的投影

答案 1 :(得分:0)

我必须做类似的事情来调试3D游戏中的图形代码。我发现最简单的思考方法是创建表示屏幕角落的向量,然后计算与任何相关对象(在本例中为平面)的交集。

看看你的视图投影(或者你的相机的矩阵堆叠看起来像是什么),并实现它们输出的屏幕空间,其角落的同格坐标为(-1, -1), (-1, 1), (1, -1), (1, 1)。知道了这一点,你剩下一个自由变量,可以求解代表摄像机角落的矢量。

虽然,这是一种痛苦。为每个角构造一个矢量要容易得多,好像相机没有旋转或平移,然后通过视图矩阵对它们进行变换,为您提供世界空间矢量。然后你可以计算矢量和平面之间的交点来获得你的四个角。

我有一份日常工作,所以我把数学留给你。但是,有些链接可能对此有所帮助:

Angle/Field of view calculations

Line plane intersection