簡體   English   中英

將屏幕坐標轉換為世界坐標

[英]Converting screen coordinates to world coordinates

我正在使用此獲取屏幕坐標:

@Override
public boolean onTouchEvent(MotionEvent ev) {
x = ev.getX(0);
y = ev.getY(0);
return true;
}

這些是我的openGL 1.0正方形的頂點:

private float vertices[] = {
        -1.0f, -1.0f,  0.0f,        // V1 - bottom left
        -1.0f,  1.0f,  0.0f,        // V2 - top left
         1.0f, -1.0f,  0.0f,        // V3 - bottom right
         1.0f,  1.0f,  0.0f         // V4 - top right
};

每個與openGL一起工作的人都知道,如果我粘貼x和y變量而不是頂點,我將變得毫無意義。 我的問題是:我應該使用什么公式將屏幕坐標x和y轉換為世界坐標,以便可以將它們用於將我的正方形定位到接觸點?

編輯:

糟糕,我忘了說這是2D游戲...

Actualy我找到了自己的方式,而glUnProject不是Android平台的最佳途徑...... http://magicscrollsofcode.blogspot.com/2010/10/3d-picking-in-android.html

有一個名為“ gluunproject”的函數可以為您完成此任務。 鏈接在這里。

http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml

順便說一下,屏幕坐標將對應於一條3D線,該線從攝像機中心經過屏幕坐標(圖像平面)。

可以通過查詢OpenGL當前矩陣來獲取ModelView,投影和視口輸入。 引用相同的鏈接(指定了函數調用)。

除了x和y屏幕參數外,您還需要depth參數或z參數。 您可以使用深度范圍將正方形放置在特定的z平面中。 或提供默認值。 但是請確保它在可見區域內。

收到對象坐標后,將其視為正方形的中心並繪制所需長度的正方形。

薩蒂什

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM