2015-11-09 57 views
0

G'day!假設我在窗口中有一個由其整數值表示的鼠標單擊(窗口可調整大小),所以它的域將是(0,0) - >(current_width,current_height)。是否有一種簡單的方法來「正常化」或將此鼠標點擊位置轉換爲OpenGL土地中的頂點?即R^2中具有域[-1,1]^2的點?從視口座標轉換爲[-1,1]^2頂點[OpenGL]

例如:如果該窗口的當前寬度和高度爲400和600分別與我在400600點擊時,我想容易將其轉換成[1,-1]。

這個功能是否存在於OpenGL中,還是我必須自己編寫函數?

乾杯。

回答

1

你必須自己編寫的功能,但它的瑣碎:

x_ogl = 2.0 * (x_mouse - width/2)/width 
y_ogl = -2.0 * (y_mouse - height/2)/height 

第二個公式中的否定是從小鼠「+已經Ÿ向下」轉換/屏幕座標比較正常的笛卡爾+ ve Y up「。另外,在X和Y座標之間維持1:1的縱橫比將是更傳統的,其中較大的軸保持範圍[-1,1]並且較小的軸具有較小的範圍。

如果這是你真正想要的,那麼在上面的兩個表達式中,而不是如圖所示,用外部分區的右側替換max(width, height)

+0

我認爲它不得不變得有點不同。我結束了: 'x_ogl = 1+(x_mouse-width)* 2/width'和 'y_ogl = -1 *((y_mouse-height)* 2/height)+1)' 雖然。你的建議促使我解決問題。 –

+0

@AggressiveSneeze。我給出的方程式應該沒問題 - 請參閱http://jsfiddle.net/8onndhuw/2/(Javascript)演示 – Alnitak

相關問題