前面我們對使用android opengl es 2.0繪圖做過綜述。對於剛剛接觸到opengl的人來說,紋理和貼圖往往令其感動很頭疼。在解開這些謎團之前,我們先來了解一下繪製圖形的基礎--座標系。
在使用opengl的場景中,存在世界座標、區域性座標、紋理座標和螢幕座標幾種。
分為3個軸,x,y,z 中心點為o, 箭頭方向為正方向,最大與最小值為1和-1,這是經過歸一化處理的。這樣的設計是為了便於顯示卡計算。
應用在裝置螢幕上的座標系。也就是圖形最終繪製的地方。左上角為原點,箭頭為正方向,大小又螢幕畫素大小決定。opengl的螢幕座標系,y軸向上為正。相當於上面那個三維座標系擷取乙個二維的xy。
也做了歸一化處理。這個座標就代表了乙個紋理。opengl是基於定點的網格繪製。就是說,opengl的圖形都是由很多頂點,按照一定的規則鏈結起來構成的圖形。那麼紋理座標的4個座標點,對映到頂點上。opengl就會把這個紋理應用到4個定點構成的圖形上。
將opengl座標系的中心點與螢幕座標系的中心點重合。矩形為螢幕的區域。opengl的繪製方法會把這個座標系的頂點,組合成圖形呈現在螢幕上(所以可以認為頂點座標(x, y)就是螢幕座標歸一化的結果,當然,這個螢幕座標可能只是物理顯示器的其中一塊顯示區域)。當然這裡還涉及到攝像機的位置,螢幕剪裁等設定。暫時不考慮。
那麼什麼是頂點呢?就是乙個有xyz座標的點。如(0,0,0)或(1,1,1)。xy就和通常的二維座標一樣定位平面的位置。z軸表示的是深度,opengl就是為了繪製3d圖形而誕生的。頂點座標是做了歸一化處理的float型別。那麼這裡就會涉及到螢幕座標系到opengl座標系的轉化工作。
螢幕座標系,左上點為(0,0) 那麼螢幕中心點座標,就是(sreenwidth / 2, screenheight / 2)。而對應opengl座標系的歸一化座標就是(0,0,0)。所以這裡需要把螢幕座標轉換成opengl的歸一化座標。
/**
* convert x to opengl
*
* @param x
* screen x offset top left
* @return screen x offset top left in opengl
*/
public static float toglx(float x)
/**
* convert y to opengl y
*
* @param y
* screen y offset top left
* @return screen y offset top left in opengl
*/
public static float togly(float y)
/**
* convert width to opengl width
*
* @param width
* @return width in opengl
*/
public static float toglwidth(float width)
/**
* convert height to opengl height
*
* @param height
* @return height in opengl
*/
public static float toglheight(float height)
/**
* convert x to screen x
*
* @param glx
* opengl x
* @return screen x
*/
public static float toscreenx(float glx)
/**
* convert y to screent y
*
* @param gly
* opengl y
* @return screen y
*/
public static float toscreeny(float gly)
/**
* convert glwidth to screen width
*
* @param glwidth
* @return width in screen
*/
public static float toscreenwidth(float glwidth)
/**
* convert height to screen height
*
* @param glheight
* @return height in screen
*/
public static float toscreenheight(float glheight)
「北京54 座標系」轉「西安80座標系」
北京54 座標系 轉 西安80座標系 詳細教程 北京54座標系和西安80座標系其實是一種橢球引數的轉換,作為這種轉換在同乙個橢球裡的轉換都是嚴密的,而在不同的橢球之間的轉換是不嚴密,因此不存在一套轉換引數可以全國通用的,在每個地方會不一樣,因為他們是兩個不同的橢球基準。那麼,兩個橢球間的座標轉換,一...
WGS 84座標系轉GCJ02座標系
最近用到某個定位介面,返回的是wsg 84座標系下的經緯度資訊,但專案前端使用的是高德地圖,發現位置有偏移。需要進行座標轉換才能正常顯示。各地圖api座標系統比較 wgs84座標系 即地球座標系,國際上通用的座標系。裝置一般包含gps晶元或者北斗晶元獲取的經緯度為wgs84地理座標系。谷歌地圖採用的...
5 1 5 座標系關係檢視
在機械人系統中,涉及的座標系有多個,為了方便檢視,ros 提供了專門的工具,可以用於生成顯示座標系關係的 pdf 檔案,該檔案包含樹形結構的座標系圖譜。6.1準備 首先呼叫rospack find tf2 tools檢視是否包含該功能包,如果沒有,請使用如下命令安裝 sudo apt install...