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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-碰撞檢測(cè)技術(shù)的研究-資料下載頁(yè)

2024-12-01 19:09本頁(yè)面

【導(dǎo)讀】浸感有著至關(guān)重要的作用。單介紹了碰撞檢測(cè)一些基礎(chǔ)理論知識(shí),著重介紹常用的碰撞檢測(cè)算法。接著,簡(jiǎn)單介紹了OpenGL編程的基礎(chǔ)知識(shí)和面向?qū)ο缶幊痰奶攸c(diǎn)。時(shí)指出該方案的優(yōu)缺點(diǎn)。最后,對(duì)全文進(jìn)行了總結(jié),并指出今后的研究方向。

  

【正文】 新為相鄰邊; return 1。 24 } return v 與 e 的距離; } //點(diǎn) 面 v_f(poly1,poly2,v,f) { if(v 不在 f 的 Voronoi 區(qū)內(nèi) ) { 將 f 更新為相鄰邊; return 1。 } 計(jì)算 f 上距 v 最近點(diǎn) u。 if(u 不在 v 的 Voronoi 區(qū)內(nèi) ) { 將 v 更新為相鄰邊; return 1。 } return v 與 u 的距離; } 25 第四章 編程基礎(chǔ)理論 第五章碰撞檢測(cè)算法的應(yīng)用是在 Visual C++ 環(huán)境下利用 OpenGL 庫(kù)得以實(shí)現(xiàn)。因此,本章將簡(jiǎn)要介紹 OpenGL 編程和面向?qū)ο缶幊痰幕A(chǔ)知識(shí)。 OpenGL編程基礎(chǔ) OpenGL基本特點(diǎn) 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展, OpenGL 已被認(rèn)為是高性能圖形和交互式視景處理的標(biāo)準(zhǔn)。目前包括 IBM 公司、 SUN 公司、 HP 公司、 Microsoft 公司和 SGI 公司在內(nèi)的幾家在計(jì)算機(jī)市場(chǎng)占領(lǐng)導(dǎo)地位的大公司都采用了 OpenGL 圖形標(biāo)準(zhǔn)。 OpenGL 三維圖形加速卡和微機(jī)圖形工作站的推出,人們可以在微機(jī)上實(shí)現(xiàn)三維圖形的應(yīng)用,如 CAD 設(shè)計(jì)、仿真模擬、三維游戲等,從而更有機(jī)會(huì)、 更方便地使用 OpenGL及其應(yīng)用軟件來建立自己的三維圖形世界。 OpenGL 具有以下特點(diǎn) [15]: 1) 工業(yè)標(biāo)準(zhǔn) OARB(OpenGL Architecture Review Board)聯(lián)合會(huì)領(lǐng)導(dǎo) OpenGL 技術(shù)規(guī)范發(fā)展,使其得到廣泛的支持,成為業(yè)界唯一真正開發(fā)的、跨平臺(tái)的圖形標(biāo)準(zhǔn)。 2) 可靠度高 OpenGL 與硬件獨(dú)立,只要硬件支持 OpenGL API 標(biāo)準(zhǔn)就行,也就是 OpenGL 應(yīng)用可以運(yùn)行在支持 OpenGL API 標(biāo)準(zhǔn)的任何硬件上。 3) 可擴(kuò)展性 OpenGL 是低級(jí)的圖形 API,它具有充分的可擴(kuò)展性。 4) 可伸縮性 基于 OpenGL API 的圖形應(yīng)用程序可以運(yùn)行在許多系統(tǒng)上,包括各種用戶電子設(shè)備、工作站以及超級(jí)計(jì)算機(jī)。 5) 容易使用 26 OpenGL 的核心圖形函數(shù)功能強(qiáng)大,帶有很多可選參數(shù),可以利用已有的格式數(shù)據(jù)進(jìn)行三維物體建模,大大提高效率。 OpenGL 提供了以下基本操作: 1) 繪制物體 OpenGL 提供了豐富的基本圖元繪制命令,利用簡(jiǎn)單的點(diǎn)、線、面繪制真實(shí)世界中任何真實(shí)的物體。 2) 變換 任何復(fù)雜的物體都是經(jīng)過基本圖元一系列變換得到。 OpenGL 提供了一系列基本變換,如取景變換、模型變換、投影變換、視口變換。 3) 光照處理 為了使場(chǎng)景得到真實(shí)感效果,必須進(jìn)行光照處理, OpenGL 正好提供此功能。 4) 著色 OpenGL 提供了兩種物體著色模式,一種是 RGBA 顏色模式,另一種是顏色索引模式 。 5) 反走樣 在 OpenGL 繪制 出來的圖形中,由于是位圖,圖像的邊緣處會(huì)出現(xiàn)鋸齒形狀,稱為走樣。 為了消除該現(xiàn)象, OpenGL 提供了反走樣技術(shù)。 6) 紋理映射 在計(jì)算機(jī)圖形學(xué)中,把包含顏色、 alpa 值和 亮度等數(shù)據(jù)的矩形數(shù)組稱為紋理。而紋理映射是將紋理貼在所繪制的三維模型表面,使三維圖形顯得更生動(dòng)。 7) 動(dòng)畫 OpenGL 提供了雙緩存區(qū)技術(shù)來實(shí)現(xiàn)動(dòng)畫繪制。 27 OpenGL實(shí)現(xiàn) 整個(gè) OpenGL 的基本工作流程如下圖 所示 : 圖 41 OpenGL工作流程圖 其中幾何頂點(diǎn)數(shù)據(jù)包括模型的頂點(diǎn) 集、線集和 多邊形集,這些數(shù)據(jù)經(jīng)過流程圖 的上部,包括運(yùn)算器、逐個(gè)頂點(diǎn)操作等;圖像數(shù)據(jù)包括象素集、影像集、 位圖集等,圖像象素?cái)?shù)據(jù)的處理方式與幾何頂點(diǎn)數(shù) 據(jù)的處理方式是不同的,但它們都經(jīng)過光柵化、逐個(gè)片元( Fragment)處理直至把最后的光柵數(shù)據(jù)寫入幀緩沖器。在 OpenGL 中的所有數(shù)據(jù)包括 幾何 頂點(diǎn)數(shù)據(jù)和象素?cái)?shù)據(jù)都可以被存儲(chǔ)在顯示列表中或者立即可以得到處理 。 OpenGL 要求把所有的幾何圖形單元都用頂點(diǎn)來描述。 這樣運(yùn)算器和逐個(gè)頂點(diǎn)計(jì)算操作都可以針對(duì)每個(gè)頂點(diǎn)進(jìn)行計(jì)算和操作,然后進(jìn)行光柵化形成圖形碎片;對(duì)于象素?cái)?shù)據(jù),象素操作結(jié)果被存儲(chǔ)在紋理組裝用的內(nèi)存中,再象幾何頂點(diǎn)操作一樣光柵化形成圖形片元。 整個(gè)流程操作的最后,圖形片元都要進(jìn)行一系列的逐個(gè)片元操作,這樣最 后的象素值 BZ 送入幀緩沖器實(shí)現(xiàn)圖形的顯示。 根據(jù)這個(gè)流程可以歸納出在 OpenGL 中進(jìn)行主要的圖形操作直至在計(jì)算機(jī)屏幕上渲染繪制出三維圖形景觀的基本步驟: 1)根據(jù)基本圖形單元建立景物模型,并且對(duì)所建立的模型進(jìn)行數(shù)學(xué)描述( OpenGL中把:點(diǎn)、線、多邊形、圖像和位圖都作為基本圖形單元)。 2)把景物模型放在三維空間中的合適的位置,并且設(shè)置視點(diǎn)( viewpoint)以觀察所感興趣的景觀。 3)計(jì)算模型中所有物體的色彩,其中的色彩根據(jù)應(yīng)用要求來確定,同時(shí)確定光照條 28 件、紋理粘貼方式等。 4)把景物模型的數(shù)學(xué)描述及其 色彩信息轉(zhuǎn)換至計(jì)算機(jī)屏幕上的象素,這個(gè)過程也就是光柵化 ( rasterization)。 在這些步驟的執(zhí)行過程中, OpenGL 可能執(zhí)行其他的一些操作,例如自動(dòng)消隱處理等。另外,景物光柵化之后被送入幀緩沖器之前還可以根據(jù)需要對(duì)象素?cái)?shù)據(jù)進(jìn)行操作。 OpenGL圖形繪制 在 OpenGL 中,所有的幾何物體都是由若干個(gè)有序的頂點(diǎn)集合來描述。例如: glVertex2s(3,8)。//整數(shù)定義的二維坐標(biāo) glVertex4f(1,2,….4)。// 浮點(diǎn)數(shù)定義的齊次坐標(biāo) 在 OpenGL 中,同一個(gè)幾何圖元的所 有被定義的頂點(diǎn)一起放在 glBegin()和 glEnd()函數(shù)之間,同時(shí)定義這些定點(diǎn)之間的關(guān)系。例如: glBegin(GL_POLYGON)。//繪制一個(gè)多邊形 glVertex2s(0,0)。 glVertex2s(0,12)。 glVertex2s(12,16)。 glVertex2s(16,8)。 glVertex2s(8,0)。 glEnd()。 另外 glBegin()和 glEnd()之間可以指定頂點(diǎn)的顏色、法向、紋理坐標(biāo)等信息。例 如 : glCallList()。//執(zhí)行顯示列表 glColor*()。//設(shè)置當(dāng)前顏色 29 glEdgeFlag*()。//控制邊界繪制 glMaterial*()。//設(shè)置材質(zhì) glNormal*()。//設(shè)置法向坐標(biāo) glTexCoord*()。//紋理坐標(biāo) OpenGL光照 處理 當(dāng)光照射到一個(gè)物體表面上時(shí),會(huì)出現(xiàn)三種情形。首先,光可以通過物體表面向空間反射,產(chǎn)生反射光。其次,對(duì)于透明體,光可以穿透該物體并從另一端射出,產(chǎn)生透射光。最后,部分光將被物體表面吸收而轉(zhuǎn)換成熱。在上述三部分光中,僅僅是透射光和反射光能夠進(jìn) 入人眼產(chǎn)生視覺效果。這里介紹的簡(jiǎn)單光照模型只考慮被照明物體表面的反射光影響,假定物體表面光滑不透明且由理想材料構(gòu)成,環(huán)境假設(shè)為由白光照明。 就光源而言,一般來說,反射光可以分成三個(gè)分量,即環(huán)境反射、漫反射和鏡面反射。環(huán)境反射分量假定入射光均勻地從周圍環(huán)境入射至景物表面并等量地向各個(gè)方向反射出去,通常物體表面還會(huì)受到從周圍環(huán)境來的反射光(如來自地面、天空、墻壁等的反射光)的照射,這些光常統(tǒng)稱為環(huán)境光( Ambient Light);漫反射分量表示特定光源在景物表面的反射光中那些向空間各方向均勻反射出去的光, 這些光常稱為漫射光( Diffuse Light);鏡面反射光為朝一定方向的反射光,如一個(gè)點(diǎn)光源照射一個(gè)金屬球時(shí)會(huì)在球面上形成一塊特別亮的區(qū)域,呈現(xiàn)所謂 “高光( Highlight) ”,它是光源在金屬球面上產(chǎn)生的鏡面反射光( Specular Light)。對(duì)于較光滑物體,其鏡面反射光的高光區(qū)域小而亮;相反,粗糙表面的鏡面反射光呈發(fā)散狀態(tài),其高光區(qū)域大而不亮。 至于光源的位置,在現(xiàn)實(shí)生活中,光密度是隨著光源的距離的增加而減少;而在圖形學(xué)中則按照一定的衰減來反映這種位置的變化。 另外,不同的材質(zhì)有不同的環(huán)境、散射和 反射顏色,它們決定了材質(zhì)的環(huán)境、散射和鏡面反射顏色。材質(zhì)的環(huán)境反射顏色與進(jìn)入光源的環(huán)境反射分量結(jié)合,它的散射反射則與光源的散射分量結(jié)合,鏡面反射則是與光源鏡面反射分量結(jié)合在一起。反射和散射定義了材質(zhì)的顏色,并且二者在典型的情況下是相同的或者是相似。鏡面反射顏色通常是白色或灰色,因此鏡面反射的高度端就是光源鏡面反射顏色的密度 。比如當(dāng)一束白光照到一個(gè)會(huì)閃光的紅色塑料球上時(shí),我們會(huì)看到這樣的效果:大部分球體看上去是紅色 30 的,但高度處則是白色。 OpenGL 提供了較為豐富的手段實(shí)現(xiàn)光照處理,以產(chǎn)生逼真的圖形效果 。 OpenGL 光照模型考慮光源和物體材質(zhì)屬性兩個(gè)方面的因素,同時(shí)光照效果又細(xì)分為環(huán)境光、漫射光和鏡面反射光等方面的效果。概括來說,對(duì)物體對(duì)象光照處理的基本步驟如下: ( 1)定義物體各頂點(diǎn)的法向矢量,借助這些法線可以確定物體與光源的相對(duì)方向。OpenGL 由此可計(jì)算出每個(gè)頂點(diǎn)接受來自光照的光強(qiáng)度。 ( 2)創(chuàng)建、放置、打開光源。 OpenGL 提供 glLightv 函數(shù)用于定義光源,并允許同時(shí)最多 8 個(gè)光源??梢栽诳臻g任意點(diǎn)布置光源,既可以安排離場(chǎng)景較近,也可以是無窮遠(yuǎn);光束的形狀也可以控制。不過,每引入一個(gè)光源,都會(huì)給 OpenGL 帶來大量計(jì)算工作,最終會(huì)影響繪圖的性能,因而光源的使用需要慎重。 ( 3)選擇光照模型。 OpenGL 提供了 glLightModel 函數(shù)用于完成這一工作。 ( 4)定義場(chǎng)景中物體的材質(zhì)屬性。物體的材質(zhì)屬性決定了物體反光的性質(zhì)。 OpenGL 中光照處理中一些常用的函數(shù): void glLight {if}[v](GLenum light,GLenum pname,TYPE param)。 參數(shù) light 是光源的標(biāo)識(shí),例如 GL_LIGHT0,GL_LIGHT1,……,GL_LIGHT7 pname 代表需設(shè) 置的屬性。 啟動(dòng)和取消光照的函數(shù)如下 : glEnable(GL_LIGHTING)。//啟用光源 glDisable(GL_LIGHTING)。//取消光源 如果在環(huán)境中定義光源,則需要為每個(gè)光源指定打開或關(guān)閉。 glEnable(GL_LIGHT0)。//打開光源 glDisable(GL_LIGHT0)。//關(guān)閉光源 OpenGL紋理 映射 現(xiàn)實(shí)世界中的物體表面很少是光滑和單調(diào)的,往往具有各種紋理,通過顏色色彩或明暗的變化體現(xiàn)出來的表面細(xì)節(jié),這類紋理稱為顏色紋理。在計(jì)算機(jī)圖形學(xué)中是采用紋理映 射的方法給計(jì)算機(jī)生成的物體圖像加上紋理。生成顏色紋理的一般方法是在一平面區(qū)域上預(yù)先定義紋理圖案,然后建立物體表面的點(diǎn)與紋理空間的點(diǎn)之間的對(duì)應(yīng)。當(dāng)物體 31 表面的可見點(diǎn)確定以后,用紋理空間的對(duì)應(yīng)點(diǎn)的值乘以亮度值,就可以將紋理圖案附到物體表面,即生成紋理。 使用紋理繪制的一般步驟為: 1. 定義紋理 定義紋理是指設(shè)定紋理圖像。在一般情況下,紋理圖像為一單獨(dú)圖像。有一維紋理 圖像、二維紋理圖像。 1D 紋理是只有寬度、沒有高度的圖像僅僅是簡(jiǎn)單的像素寬或高;2D 紋理是多于一個(gè)像素寬和高的圖像,通常從 WINDOWS BMP 文件的加載 。 在在OpenGL 中一個(gè)簡(jiǎn)單的函數(shù)定義 1D 紋理: glTexImage1D,一個(gè)簡(jiǎn)單的函數(shù)定義 2D 紋理:glTexImage2D 函數(shù)定義如下: Void glTextImage1D(GLenum target,Glint level,Glint ponents,GLsizei width,Glint border,GLenum format,GLenum type,const GLvoid *pixels) [17] Target 參數(shù)指定應(yīng)該定義哪一個(gè)紋理 ,這一參數(shù)必須為 GL_TEXTURE_1D; level參數(shù)指出紋理圖像的詳細(xì)級(jí)別,并且通常為 0; ponents 參數(shù)指定每一個(gè)像素顏色值的數(shù)字。對(duì)于顏色索引紋理, ponent 參數(shù) 必須為 3 和 4 分別用于 RGB 和 RGBA紋理圖像; Width 和 border 指定紋理圖像的尺寸
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1