我有一個攝像機,它的高度h處的座標爲x,y,它以特定視角在特定角度觀察x-y平面。我想計算相機可以在飛機上看到的4個角落。計算攝像機在平面上可以看到的面積
有可能是某種形式的公式,但我似乎無法在谷歌上找到它。
編輯:我應該提到我的意思是一個3D圖形意義上的相機。具體來說,我使用XNA。
我有一個攝像機,它的高度h處的座標爲x,y,它以特定視角在特定角度觀察x-y平面。我想計算相機可以在飛機上看到的4個角落。計算攝像機在平面上可以看到的面積
有可能是某種形式的公式,但我似乎無法在谷歌上找到它。
編輯:我應該提到我的意思是一個3D圖形意義上的相機。具體來說,我使用XNA。
我不得不在3D遊戲圖形調試代碼做類似的事情。我發現最簡單的思考方式是創建代表屏幕角點的矢量,然後計算與任何相關對象(在本例中爲飛機)的交點。
看看你的視圖投影(或任何你的相機的矩陣堆棧看起來像乘以一起),並實現他們輸出的屏幕空間具有(-1, -1), (-1, 1), (1, -1), (1, 1)
的同調座標的角落。知道這一點,你剩下一個自由變量,並可以解決表示相機角落的向量。
雖然,這是一種痛苦。爲每個角構造一個矢量就好像相機沒有旋轉或平移一樣,然後通過視圖矩陣對它們進行轉換,爲您提供世界空間矢量。然後,您可以計算矢量與飛機之間的交點,以獲得您的四個角落。
我有一份日常工作,所以我把數學留給你。有些鏈接可能提供幫助的,但是:
忽略鏡頭失真,並假設鏡頭幾乎處於焦點位置,那麼您只需要一個由傳感器尺寸和鏡頭組成的三角形,然後將鏡頭對準主體 - 類似的三角形會給出主體平面的大小。
如果你想有一個傾斜的目標平面,這只是一個投影到垂直物體平面