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

正文內(nèi)容

三維虛擬場景中三維虛擬儀表程序設(shè)計畢業(yè)論文-資料下載頁

2025-06-28 10:49本頁面
  

【正文】 01)。然后 再對第一個頂點(diǎn)進(jìn)行初始化,再利用for循環(huán)通過依次增加的角度來繪出其余100個頂點(diǎn),最后通過PrimitiveSet類設(shè)置頂點(diǎn)的關(guān)聯(lián)方式就能畫好一個圓。PrimitiveSet類的繼承關(guān)系如圖513所示。圖512 繪制刻度表的流程圖圖513 osg::PrimitiveSet類的繼承關(guān)系圖在OSG中使用PrimitiveSet類來表達(dá)圖元組的信息,如果沒有設(shè)置任何圖元組,幾何體對象將無法正常工作,圖元組是用于實(shí)現(xiàn)頂點(diǎn)索引機(jī)制,將頂點(diǎn)數(shù)據(jù)有序地構(gòu)成不同幾何形狀的重要方式。PrimitiveSet類按照與OpenGL相似的方式,定義了10種圖元類型,用于構(gòu)成任意復(fù)雜程度的,由點(diǎn)、線以及多邊形面片組成的物體,如表58所示。表58 PrimitiveSet類的定義圖元類型對應(yīng)OpenGL圖元描述POINTSGL_ POINTS繪制用戶指定的所有頂點(diǎn)LINESGL_ LINES繪制直線。直線的起點(diǎn)、終點(diǎn)由數(shù)組中先后相鄰的兩個點(diǎn)決定;用戶提供的點(diǎn)不止兩個時,將嘗試?yán)^續(xù)繪制新的直線LINES_STRIPGL_ LINES_STRIP繪制多段直線條帶。多段直線的第一段由數(shù)組中的前兩個點(diǎn)決定;其余段的起點(diǎn)位置為上一段的終點(diǎn)坐標(biāo),而終點(diǎn)位置由數(shù)組中隨后的點(diǎn)決定LINES_LOOPGL_ LINES_LOOP繪制封閉直線。繪圖方式與多段直線相同,但是最后將自動封閉該直線TRIANGLESGL_ TRIANGLES繪制三角形。三角形的3個頂點(diǎn)由數(shù)組中相鄰的3個點(diǎn)決定,并按照逆時針的順序進(jìn)行繪制;用戶提供的點(diǎn)不止3個時,將嘗試?yán)^續(xù)繪制新的三角形TRIANGLE_ STRIPGL_ TRIANGLE_ STRIP繪制多段三角形條帶。第一段三角形的3個頂點(diǎn)由數(shù)組中的前3個點(diǎn)決定;其余三角形的繪制,其始邊由上一段三角形的后兩個點(diǎn)決定 續(xù)表TRIANGLE_FANGL_ TRIANGLE_FAN繪制三角形面。第一段三角形的3個頂點(diǎn)由數(shù)組中的前3個點(diǎn)決定,其余段三角形的繪制,起始邊由整個數(shù)組的第一點(diǎn)和上一段三角形的最后一個點(diǎn)決定,第三點(diǎn)由數(shù)組中隨后的一點(diǎn)決定QUADSGL_ QUADS繪制四邊形。四邊形的4個頂點(diǎn)由數(shù)組中的相鄰4個點(diǎn)決定,并按照逆時針的順序進(jìn)行繪制;用戶提供的點(diǎn)不止4個時,將嘗試?yán)^續(xù)繪制新的四邊形QUADS_ STRIPGL_ QUADS_ STRIP繪制多段四邊形條帶。第一段四邊形的起始邊由數(shù)組中的前兩個點(diǎn)決定,邊的矢量方向由這兩點(diǎn)的延伸方向決定;起始邊的對邊由其后的兩個點(diǎn)決定,如果起始邊和對邊的矢量方向不同,那么四邊形將會扭曲;其余段四邊形的繪制,起始邊由上一段決定,其對邊由隨后的兩點(diǎn)及其延伸方向決定POLYGONGL_POLYGON繪制任意多邊形,根據(jù)用戶提供的頂點(diǎn)的數(shù)量繪制凸多邊形 根據(jù)這個表我們就知道該用LINES_STRIP這種方法繪制多段直線條帶,即繪制外圓,然后定義一個角度angle,使之變化到對應(yīng)的角度,在對應(yīng)的地方繪制頂點(diǎn),關(guān)鍵實(shí)現(xiàn)代碼如下: ……osg::ref_ptrosg::Vec3Array vertices = new osg::Vec3Array(101)。//定義一個頂點(diǎn)數(shù)組,共個 (*vertices)[0].set( , , )。//初始化第一個頂點(diǎn)在(,)處//依次繪制剩下的100個頂點(diǎn) for ( unsigned int i=1。 i=100。 ++i ) { float angle = (float)i * osg::PI / 。 (*vertices)[i].set( radius * cosf(angle), , radius * sinf(angle)+5 )。 }…… 就這樣我們就畫好了外圓,畫好外圓后,我們就琢磨著畫圓里面的刻度了,實(shí)際生活中的儀表刻度類似于一條條線段,所以畫度量刻度可以用一條條短的線段表示,然后再設(shè)置線寬就能比較真實(shí)地反映出刻度。我們通過for循環(huán),每循環(huán)一次都建立一個geometry和畫兩個頂點(diǎn),并且用PrimitiveSet類設(shè)置他們的關(guān)聯(lián)方式,將他們連接起來,然后用setVertexArray將頂點(diǎn)讀進(jìn)geometry里面,即:geometrysetVertexArray(())。coords是頂點(diǎn),最后將geometry加到geode中去,這樣就可以把外圓里面的度量刻度畫好。其中設(shè)置線寬我們需要用到LineWidth類,LineWidth類的繼承關(guān)系如圖514所示。圖514 osg::LineWidth類的繼承關(guān)系圖 通過設(shè)置線寬就能逼真的顯示出度量刻度了,關(guān)鍵實(shí)現(xiàn)代碼如下: ……//繪制外圓內(nèi)側(cè)的度量刻度for ( unsigned int i=1。 i=92。 ++i ) { osg::ref_ptrosg::Geometry geom1 = new osg::Geometry。 if((i1)%10==0) { osg::ref_ptrosg::Vec3Array coords=new osg::Vec3Array。 float angle = (float)((i1)/2) * osg::PI / 。 coordspush_back(osg::Vec3( (radius2) * cosf(angle), , (radius2) * sinf(angle)+5 ))。 coordspush_back(osg::Vec3( (radius1) * cosf(angle), , (radius1) * sinf(angle)+5 ))。 //設(shè)置頂點(diǎn)的關(guān)聯(lián)方式 geom1addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,2))。 geom1setVertexArray(())。 geodeaddDrawable( () )。 } else{ osg::ref_ptrosg::Vec3Array coords=new osg::Vec3Array。 float angle = (float)((i1)/2) * osg::PI / 。 coordspush_back(osg::Vec3( () * cosf(angle), , () * sinf(angle)+5 ))。 coordspush_back(osg::Vec3( (radius1) * cosf(angle), , (radius1) * sinf(angle)+5 ))。 //設(shè)置頂點(diǎn)的關(guān)聯(lián)方式 geom1addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES,0,2))。 geom1setVertexArray(())。 geodeaddDrawable( () )。 }……根據(jù)上面的方法和代碼,就能畫好外圓內(nèi)側(cè)的度量刻度,這樣一個比較完整的刻度表就快完成了;最后圓和里面的刻度都畫好了,指針就相對容易多了了,因?yàn)橹羔樋梢钥闯墒且粭l線段,只要將它畫得比刻度長就行了,還有就是將線段的一個端點(diǎn)放在圓心就完成了。所以要先建立一個新的geometry,然后申請兩個頂點(diǎn)并設(shè)置其頂點(diǎn)的關(guān)聯(lián)方式,通過PrimitiveSet類就能得到那根我們想要的指針,運(yùn)行效果如圖515所示。圖515 運(yùn)行效果圖 坐標(biāo)系的繪制 繪制坐標(biāo)系的流程圖如圖516所示。繪制數(shù)據(jù)變化曲線圖的坐標(biāo)系,也就是繪制兩條相互垂直相交的線段,首先先建立一個新的geometry,然后申請四個頂點(diǎn),通過PrimitiveSet類設(shè)置其頂點(diǎn)的關(guān)聯(lián)方式,通過LineWidth類設(shè)置線寬,再通過建立一個四維顏色數(shù)組對這四個頂點(diǎn)進(jìn)行顏色設(shè)置,即:osg::Vec4Array* colors = new osg::Vec4Array。然后通過頂點(diǎn)顏色綁定setCorlorBinding對頂點(diǎn)進(jìn)行顏色綁定,最后就能得到相互垂直相交的坐標(biāo)系,關(guān)鍵實(shí)現(xiàn)代碼如下:……osg::Vec3Array* vertices = new osg::Vec3Array。//新建一個頂點(diǎn)數(shù)組;geometrysetVertexArray(vertices)。//繪制兩根坐標(biāo)軸;verticespush_back(osg::Vec3(, , ))。//設(shè)置頂點(diǎn)的坐標(biāo);verticespush_back(osg::Vec3(,))。verticespush_back(osg::Vec3(, , ))。verticespush_back(osg::Vec3(,))。// 設(shè)置線寬widthsetWidth()。osg::Vec4Array* colors = new osg::Vec4Array。colorspush_back(osg::Vec4f(,))。//對頂點(diǎn)設(shè)置顏色;colorspush_back(osg::Vec4f(,))。colorspush_back(osg::Vec4f(,))。colorspush_back(osg::Vec4f(,))。geometrysetColorArray(colors)。geometrysetColorBinding(osg::Geometry::BIND_OVERALL)。//對頂點(diǎn)進(jìn)行顏色綁定;geometryaddPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINES, 0, 4))。//設(shè)置頂點(diǎn)的連接方式;……通過上述方法和代碼就能繪制出兩條相互垂直相交的坐標(biāo)系,運(yùn)行效果如圖517所示。 文字和數(shù)字標(biāo)簽的繪制繪制文字和數(shù)字標(biāo)簽的流程如圖518。畫好三維虛擬儀表的刻度表和數(shù)據(jù)變化曲線圖的坐標(biāo)系后,還需要在相應(yīng)的地方附上數(shù)字或文字說明,以更好的了解該表所具有的功能和作用。圖516 繪制坐標(biāo)系流程圖圖517 運(yùn)行效果圖圖518 繪制文字和數(shù)字標(biāo)簽的流程圖首先申請一個geode,然后設(shè)置文字的字體,通過字體光盤文件夾IVE中可以找到,然后通過StateSet來設(shè)置狀態(tài),關(guān)閉燈光,再對文字設(shè)置位置,設(shè)置字體屬性,用addDrawable將文本信息讀進(jìn)geode中,使用setAxisAlignment設(shè)置文字的方向,使用setCharacterSize來設(shè)置文字的大小,使用setText來設(shè)置文字的內(nèi)容,使用setColor來設(shè)置文字的顏色。最后我們就能在適當(dāng)?shù)奈恢梅胖孟鄳?yīng)的文本信息。其中osgText::Text類繼承關(guān)系如圖519所示。圖519 osgText::Text類的繼承關(guān)系圖 關(guān)鍵代碼如下:……//設(shè)置字體,字體光盤文件夾IVE中可以找到std::string caiyun(fonts/)。//設(shè)置狀態(tài),關(guān)閉燈光osg::StateSet* stateset = geodegetOrCreateStateSet()。statesetsetMode(GL_LIGHTING,osg::StateAttribute::OFF)。//設(shè)置位置osg::Vec3 position1(,)。//設(shè)置位置1osg::Vec3 position2(,)。 //設(shè)置位置2osg::Vec3 position3(,)。 //設(shè)置位置3osg::Vec3 position4(,)。 //設(shè)置位置4osg::Vec3 position5(,)。 //設(shè)置位置5osg::Vec3 position6(,)。 //設(shè)置位置6osg::Vec3 position7(,)。 //設(shè)置位置7osg::Vec3 position8(,)。 //設(shè)置位置8//設(shè)置字體屬性osgText::Text* text1 = new osgText::Text。osgText::Text* text2 = new osgText::Text。osgText::Text* text3 = new osgText::Text。osgText::Text* text4 = new osgText::Text。osgText::Text* text5 = new osgText::Text。osgText::Text* text6 = new osgText::Text。osgText::Text* text7 = new osgText::Text。osgText::Text* text8 = new osgText::Text。geode2addDrawable( text1 )。//加載到節(jié)點(diǎn)2中g(shù)eode3addDrawable( text2 )。 //加載到節(jié)點(diǎn)3中g(shù)eode4addDrawable( text3 )。 //加載到節(jié)點(diǎn)4中g(shù)eode5addDrawable( text4 )。 //加載到節(jié)點(diǎn)5中g(shù)eode6addDrawable( text5 )。 //加載到節(jié)點(diǎn)6中g(shù)eode7addDrawable( text6 )。 //加載到節(jié)點(diǎn)7中g(shù)eode8addDrawable( text7 )。 //加載到節(jié)點(diǎn)8中g(shù)eode8addDrawable( text8 )。 //加載到節(jié)點(diǎn)9中//設(shè)置字體text1setFont(caiyun)。text2setFont(caiyun)。text3setFont(caiyun)。text4setFont(caiyun)。text5setFon
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1