freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android手機系統(tǒng)的3d桌面主題開發(fā)畢業(yè)論文(參考版)

2025-08-23 15:39本頁面
  

【正文】 。 不積跬步無以至千里,本論文能夠順利的完成,也歸功于各位指導老師的認真負責,使我能夠很好的掌握和運用專業(yè)知識,并在論文中得以體現(xiàn)。在此向老師表示深深的感謝和崇高的敬意。 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 40頁 參考文獻 [1]吳亞峰 蘇亞光, Android 3D 游戲開發(fā)技術詳解與典型案例 [M].北京:電子工業(yè)出版社, 2020:P79– P268 [2]閻宏, JAVA 與模式 [M]. 北京:電子工業(yè)出版社, 2020:P209– P266 [3]Lauren Darcey[美 ] Shane Conder[美 ],Android 移動開發(fā)一 本就夠 [M].北京:人民郵電出版社, 2020:P276– P298 [4]葉乃文 鄺勁筠等, JAVA 核心技術卷一:基礎知識 [M].北京:機械工業(yè)出版社, 2020:P143– P273 [5]陳昊鵬 王浩等, JAVA 核心技術卷二:高級特性 [M].北京:機械工業(yè)出版社, 2020:P1– P147 [6]李軍 徐波等, OpenGL 編程指南 [M].北京:機械工業(yè)出版社, 2020:P1– P308 [7]張琪 付飛等, OpenGL超級寶典(第 4版) [M].北京:人民郵電出版社, 2020:P1– P246 [8]陳昊鵬, JAVA 編程思想 [M].北京:機械工業(yè)出版社, 2020:P76– P108 [9]尹松強 傅鸝 .java 反射機制探究 [J], 2020 年 (第 7卷第 11 期 ):P85P85 [10] google 公司官網(wǎng) . [11] 安卓開發(fā)者官網(wǎng) . 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 41頁 致 謝 本論文在老師的悉心指導和嚴格要求下已完成,從課題選擇到具體撰寫和修改完善,無不凝聚了老師的心血和汗水。但開發(fā)者必須意識到使用 OpenGL ES 開發(fā)應用程序的固有缺點:十分占用計算資源及內(nèi)存。但隨著用戶對體驗提出越來越高的要求個,開發(fā)更加逼真的 3D效果將被得到推崇。 但盡管手機在硬件和軟件上得到了發(fā)展,其計算能力還十分有限,還有待進一步提高。硬件上,不斷地更新?lián)Q代,計算能力不斷增強,幾乎可以與個人計算機媲美。 使用鏡像技術也會使繪制速度下降,因為需要在場景中,繪制鏡像和使用混合。 在 OpenGL ES 的 3D 場景中,其繪制速度還與場景中元素的多少及每個元素的復雜性有關。 (getHolder())。 } /** * 釋放資源 */ public void destroy() { /** * 釋放 bitmap資源 */ ()。// 用來 繪制比較真實的效果 // 創(chuàng)建普通不透明反射面 alphaFloor = new Floor(, , floorTexId)。 使用 OpenGL ES 繪制 3D場景,由于屏幕本身是二維的,因此把三維場景映射到二維屏幕上,需要大量的數(shù)學運算,因而加重了 cpu 的負載。 代碼 總結 使用模擬 3D主題樣式,應用程序運行得十分順暢;但使用 OpenGL ES 繪制的 3D效果,會導致手機出現(xiàn)卡機現(xiàn)象。因此,在銷毀場景時,釋放持有的圖像資源。在編程上,對資源的有效管 理更多地展現(xiàn)在是否存在內(nèi)存泄露的問題。 alphaFloorTexId = initTexture(gl, bitmapAlphaFloor)。 //關閉背面剪裁 /*** 恢復矩陣 */ ()。 ()。 (90, 0, 1, 0)。 (*,0,0)。 ()。 (90, 0, 1, 0)。 (*,0,0)。 ()。具體代碼如代碼 。因此,應該把更多初始化工作以及某些十分耗費計算資源的處理放在場景初始化的階段進行。 (90, 1, 0, 0)。 //繪制上大面 ()。 (gl)。 (0, 0, *)。 ()。 (0, 0, *)。 //打開背面剪裁 //總繪制思想:通過把一個顏色矩形旋轉移位到立方體每個面的位置 //繪制立方體的每個面 //沿 y軸上升 SCALE個單位,使底面 y=0 (0, *, 0)。 /*** 繪制物體 */ public void drawSelf(GL10 gl){ /*** 保存矩陣 */ ()。如本應用程序中的立方體就可以通過矩形的平移以及旋轉變化得到。但實際上,對于規(guī)則的物體,在實現(xiàn)上不必要計算出其每個頂點的坐標。 在最終實現(xiàn)的效果圖上可以看到:場景中心有一個每個側面都 一樣的立方體。 // 關燈 ()。 // 初始化材質為白色 (gl)。 // 開燈 initLight(gl)。 // 啟用深度檢測,被遮擋的物體不會被繪制 // 繪制立方體 (gl)。// 繪制半透明反射面,用來 繪制比較真實的效果 // 關閉混合 ()。 /*** 3,繪制半透明反射面:需關閉深度檢測(默認),打開混合模式 */ // 開啟混合 ()。 // 繪制 ()。 // 初始化燈光效果 initMaterialWhite(gl)。 // 繪制立方體鏡像 // 繪制旋轉體 ()。 // 關閉混合 /*** 2,繪制鏡像體:需打開深度檢測 */ // 開啟深度檢測 ()。 (gl)。 public void onDrawFrame(GL10 gl) { ?? 省略部分代碼 /** * 1,繪制反射面 :y=0;需關閉深度檢測,并打開混合模式 */ // 開啟混合 ()。 最終實現(xiàn)的效果如圖 。 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 34頁 圖 不透明地板紋理圖 圖 透明度為 30%地板紋理圖 其次,修改物體的繪制順序。原因是:鏡像被繪制得過于清晰細致,而現(xiàn)實生活中的倒影都是十分模糊的,并不像上圖那樣高度清晰。 如圖 是開啟混合后的效果。 圖 開啟混合后的效果 那 混合是什么呢?混合就是把兩種顏色 以某種既定的方式混合 在一起 ,再顯示在屏幕上 。因為即使關閉了深度檢測,由于圖像不透明,它仍然會去更新覆蓋所有 Depth Buffer,而且把較遠的鏡像遮擋住。 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 33頁 那么如何使鏡像能夠不被遮擋而被繪制出來呢?那就需要在繪制地面時,關閉深度檢測。 否則,表示當前要繪制的圖形在已繪制的部分物體后面,則無需繪制該圖形。 當 OpenGL 柵格化所繪制基本圖形,將計算該圖形與 攝像機 之間的距離, 并 保存在Depth Buffer 中。距離大小為相對值而非實際距離,這個值越大表示與 攝像機 之間的距離越大。 這個算法的基本步驟如下: 將 Depth Buffer 中的值使用最大值清空整個 Depth Buffer,這個最大值缺省為 ,為距離 攝像機 最遠的裁剪的距離。 在繪制 3D 場景 時,將只繪制可見的面而不去繪制隱藏的面,這個過程叫 消隱( Hidden surface removal) ,采用的算法為 深度 緩沖算法( The depth buffer algorithm),算法描述的整個 過程也稱為深度 檢測( Depth Test)。那是什么原因導致出現(xiàn)這種情況呢?這是因為在開發(fā) OpenGL 程序時,出于優(yōu)化等原因,一般會開啟深度檢測。因此,如圖 、 、 順序繪制場景 ② 。鏡像與實際物體顏色、大小相等,放置方向卻相反,由于鏡像與實際物體存在一個接觸面,而接觸面剛好與地面重合,因此產(chǎn)生的效果更真實。但這些光照效果并不能倒影等鏡像效果;加之,在使用編程的方式繪制的場景中,每個場景元素都被繪制地十分細致清晰;因此,場景缺乏真實感,而且地面上的物體即使它們的底面 Y坐標與地面相等,但看起來 卻像是懸空的(如圖 )。這是因為在現(xiàn)實世界中,有各種因光線的存在而產(chǎn)生影子、倒影等效果,影子或者倒影是物體在地面或者其他反射面中的鏡像,因而效果十分真實。//頂點數(shù)組 float vertices[] = new float[] {(positionXs[(index + 1) % number]+moveX)*, height*, (positionZs[(index + 1) % number]+moveZ)*, (positionXs[index]+moveX)*, 0, (positionZs[index]+moveZ)*, (positionXs[(index + 1) % number]+moveX)*, 0, (positionZs[(index + 1) % number]+moveZ)*, (positionXs[(index + 1) % number]+moveX)*, height*, (positionZs[(index + 1) % number]+moveZ)*, (positionXs[index]+moveX)*, height*, (positionZs[index]+moveZ)*, (positionXs[index]+moveX)*, 0, (positionZs[index]+moveZ)* }。//計算 xz平移量 float moveX = (normalX * radius * ) / sum。 //計算中點 :獲取 xz比值 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 29頁 代碼 鏡像技術 float normalZ = (positionZs[index] + positionZs[(index + 1) % number]) / 2。 index number。positionZs[index] = (float) (radius * (Math .toRadians(angleSpan * index)))。 index number。 float positionZs[] = new float[number]。 /*** 計算每個矩形 xz坐標 */ float angleSpan = 360 / number。具體代碼實現(xiàn)如代碼 。 注: moveX、 moveZ 是 X、 Z坐標的平移值; PARAM 是常量參數(shù); X、 Z是移動向量的 X、 Z坐標。計算公式如下: moveX = PARAM * X / (X + Z)。各邊移動向量的計算公式如下: X = (X1 + X2) /2; Y = 0; Z = (Z1 + Z2) / 2; 注: X、 Y、 Z 為移動向量的三維坐標; X Z1為左端點的 X、 Z坐標; X Z2 為右端點的X、 Z坐標。 那以 什么規(guī)律來移動多邊形的邊呢?由于向量具有方向性,因此采取利用向量移動多邊形的邊。 圖 方案二實現(xiàn)的效果 如何使得每幅圖像之間有一定間隙呢?這需要依據(jù)正多邊形的特點,巧妙利用了相關的數(shù)學知識。從圖中可以發(fā)現(xiàn),圖像鋪滿了 N棱體的每一個側面,當 N 值較大時, N棱體每 個側面的夾角接近 180 度,用戶可能無法區(qū)分圖像的邊界,因此也無法獲知如何選取相對應的圖像來到達相對應的 Workspace 子視圖。因此,最佳方案為方案二。但由于在方案一中,不同的 N值將會嚴重影響圖像的大小,而方案二中圖像大小已確定, N 值只影響 N棱體橫截面所在的圓的半徑。 缺點:圓半徑隨著 N值增大而增大;當 N值較大時,可能導致用戶看不到 N 棱體中較遠的側面,而最近的側面又擋住了所有視線。 圖 方案二原理圖 優(yōu)點:與方案一相同,同樣通過數(shù)學運算簡單,可以輕易得到坐標值。 而每幅圖像的下頂點 Y 坐標的值都為零,即 Y = 0; 上頂點 Y 坐標的值都等于 N棱體的高度,即 Y = HEIGHT; 注: HEIGHT 為 N棱體的高 度。 然后,依據(jù)傳遞過來的圖像數(shù)組的長度(即圖像數(shù)量 N)計算出圓的半徑及每幅圖像頂點的 xz 坐標。 方案二 該方案思路依據(jù)是正 N 棱體的橫截面是一個正 N 邊形,正 N邊形的每個頂點一定在同360 * (n 1) / N X Z RADIUS 基于 Android手機系統(tǒng)的 3D桌面主題開發(fā) 25頁 一個圓上,因此可以依據(jù)正多邊形的邊長計算得到圓半徑,所以 只要確定了正多邊形的邊長和圓心坐標以及 N棱體的高度,就可以確定整個 N棱體上所有點的坐標 。 缺點:圓半徑固定,圖像在 屏幕中的大小會隨著 N值增大而變小。 最終, N 棱體側面中的每幅圖像的三維坐標全部確定下來了。其中計算公式如下: X = RADIUS * S
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1