2012-04-09 64 views
1

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

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

编辑:我应该提到我的意思是一个3D图形意义上的相机。具体来说,我使用XNA。

回答

0

我不得不在3D游戏图形调试代码做类似的事情。我发现最简单的思考方式是创建代表屏幕角点的矢量,然后计算与任何相关对象(在本例中为飞机)的交点。

看看你的视图投影(或任何你的相机的矩阵堆栈看起来像乘以一起),并实现他们输出的屏幕空间具有(-1, -1), (-1, 1), (1, -1), (1, 1)的同调坐标的角落。知道这一点,你剩下一个自由变量,并可以解决表示相机角落的向量。

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

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

Angle/Field of view calculations

Line plane intersection

0

忽略镜头失真,并假设镜头几乎处于焦点位置,那么您只需要一个由传感器尺寸和镜头组成的三角形,然后将镜头对准主体 - 类似的三角形会给出主体平面的大小。

如果你想有一个倾斜的目标平面,这只是一个投影到垂直物体平面