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

正文內(nèi)容

圖形建模與虛擬現(xiàn)實(shí)技術(shù)在仿真中的應(yīng)用研究(編輯修改稿)

2025-01-11 02:33 本頁面
 

【文章內(nèi)容簡介】 圖形建模系統(tǒng)的框架類結(jié)構(gòu) 圖形建模系統(tǒng)采用 MVC 設(shè)計(jì)模式的文檔 /視圖結(jié)構(gòu),并在 MFC 類庫的基礎(chǔ)上形成應(yīng)用程序框架,系統(tǒng)框架的類結(jié)構(gòu)及相互關(guān)系如圖 所示。 圖 系統(tǒng)框架的類結(jié)構(gòu)及相互關(guān)系 ( 1) 應(yīng)用程序類 CGEngineerApp(CwinApp 的派生類 )保留并維護(hù)了一份所有文檔模板的指針列表,這是一個(gè)鏈表結(jié)構(gòu)。應(yīng)用程序?yàn)樗С值拿總€(gè)文檔類型動(dòng)態(tài)分配一個(gè) CMultiDocTemplate 對(duì)象,函數(shù)原型為: CMultiDocTemplate(UINTnIDResource,CRuntimeClass*pDocClass,CRuntimeClass*pFrameClass,CRuntimeClass*pViewClass)。 并在應(yīng)用程序類的 CWinApp::InitInstance 成員函數(shù)中將每個(gè) CMultiDocTemplate 對(duì)象傳遞給 CWinApp::AddDocTemplate。該函數(shù)將一個(gè)文檔模板加入到應(yīng)用程序可用文檔模板的列表中。函數(shù)原形為: 圖形建模系統(tǒng) 圖形定義系 統(tǒng) 設(shè)備庫管理 資源庫管理 設(shè)備連接系統(tǒng) 其 他 CGEngineerApp CMultiDocTemplate CGEngineerDoc CMDIChildWnd CMDIFrameWnd CGEngineerView 河南師范大學(xué)本科畢業(yè)論文 9 void AddDocTemplate(CdocTemplate*pTemplate)。 應(yīng)用程序可以利用 CWinApp::GetFirstDocTemplatePostion 函數(shù)獲得應(yīng)用 程序注冊(cè)的第一個(gè)文檔模板的位置,利用該值來 CWinApp::GetNextDocTemplate 函數(shù),獲得第一個(gè)CDocTemplate 對(duì)象指針。 函數(shù)原形為: POSITION GetFirstDocTemplate()const。 CDocTemplate*GetNextDocTemplate(POSITIONamp。pos)const。 第二個(gè)函數(shù)返回由 pos 標(biāo)識(shí)的文檔模板。 POSITION 是 MFC 定義的一個(gè)用于迭代對(duì)象指針檢索的值。通過這兩個(gè)函數(shù),應(yīng)用程序可以遍歷整個(gè)文檔模板列表。如果被檢索的文檔模板是模板列表中的最后一個(gè),則 pos 參數(shù)被置為 NULL。在應(yīng)用程序的任何地 方,程序員都可以調(diào)用 AfxGetApp()函數(shù)獲得應(yīng)用程序的對(duì)象指針。 ( 2) 一個(gè)文檔模板可以有多個(gè)文檔,每個(gè)文檔模板都保留并維護(hù)了一個(gè)對(duì)應(yīng)所有文檔的指針列表,可以利用 CDocTemplate::GetFirstDocPosition 函數(shù)獲得與文檔模板相關(guān)的文檔集合中第一個(gè)文檔的位置,并用 POSITION 值作為 CDocTemplate::GetNextDoc的參數(shù)來重復(fù)遍歷與模板相關(guān)的文檔列表。函數(shù)原形為: POSITION GetFirstDocPosition()const=0。 CDocument*GetNextDoc(POSITIONamp。rPos)const=0。 如果列表為空,則 rPos 被置為 NULL。 ( 3) 在文檔中可以調(diào)用 CDocument::GetDocTemplate 獲得指向該文檔模板的指針。函數(shù)原形為: CDocTemplate*GetDocTemplate()const 如果該文檔不屬于文檔模板管理,則返回值為 NULL。 ( 4) 一個(gè)文檔( CGEgineerDoc 類的實(shí)例對(duì)象)可以有多個(gè)視圖( CGEgineerView類的實(shí)例對(duì)象)。每一個(gè)文檔都保留并維護(hù)一個(gè)所有與之相關(guān)的視圖的列表。CDocument::AddView 將一個(gè)視圖連接到文檔上,將該視圖加入到與文檔相關(guān)聯(lián)的視圖的列表中,并將視圖的文檔指針指向該文檔。當(dāng)執(zhí)行系統(tǒng)中的 File/New、 File/Open 命令時(shí),系統(tǒng)將一個(gè)新創(chuàng)建的視圖對(duì)象連接到文檔上, MFC 會(huì)自動(dòng)調(diào)用該函數(shù),框架通過文檔 / 視 圖 結(jié) 構(gòu) 將 文 檔 和 視 圖 關(guān) 聯(lián) 起 來 。 應(yīng) 用 程 序 可 以 調(diào) 用CDocument::GetFirstViewPosition 返回與該文檔相關(guān)聯(lián)的視圖列表中第一個(gè)視圖的位置,并調(diào)用 CDocument::GetNextView 返回指定位置的視圖,并將 rPositon 的值 設(shè)置為列表中下一個(gè)視圖的 POSITION值。如果找到的視圖為列表中的最后一個(gè),則將 rPosition河南師范大學(xué)本科畢業(yè)論文 10 置為 NULL。函數(shù)原型為: Virtual POSITION GetFirstViewPosition()const。 Virtual CViw*GetNextView(POSITIONamp。rPosition)cosnt。 當(dāng)在文檔上新增或刪除一個(gè)視圖時(shí), MFC 會(huì)調(diào)用 OnChangeViewList 函數(shù)。如果被刪除的視圖是該文檔的最后一個(gè)視圖,則刪除該文檔。 ( 5) 一個(gè)視圖只能對(duì)應(yīng)一個(gè)文檔。在視圖中,調(diào)用 CView::GetDocument 可以獲得一個(gè)指向該視圖的文檔的指針。函數(shù)原形為: CDocument*GetDocument()const。 如果該視圖不與任何文檔相,則返回 NULL. ( 6) MDI 框架窗口通過調(diào)用 CFrameWnd::GetActiveDocument 可以獲得與當(dāng)前活動(dòng)的視圖相關(guān)聯(lián)的 CDocument 指針。函數(shù)原形為: virtual CDocument*GetActiveDocument()。 ( 7) 通過調(diào)用 CFrameWnd::GetActiveView 可以獲得指向與 CFrameWnd 框 架窗口連接的活動(dòng)視圖的指針,如果是被 CMDIFrameWnd 框架窗口調(diào)用,則返回 NULL。 MDI框架窗口可以首先調(diào)用 MDIGetActive 找到活動(dòng)的 MDI 子窗口,然后找到對(duì)應(yīng)于子窗口的活動(dòng)視圖。函數(shù)原形為: virtual Cdocument*GetActiveDocument()。 ( 8) MDI 框架窗口通過調(diào)用 CFrameWnd::GetActiveFrame,可以獲得一個(gè)指向 MDI框架窗口的活動(dòng)多文檔界面子窗口的指針。 ( 9) CMDIChildWnd 調(diào)用 GetMDIFrame 獲得 MDI 框架窗口 (CMDIFrameWnd)。 ( 10) CWinApp 調(diào)用 AfxGetMainWnd 得到指向應(yīng)用程序的活動(dòng)主窗口的指針。 下面一段代碼說明了如何利用 CDocTemplate、 CDocument 和 CView 之間的存取關(guān)系,遍歷整個(gè)文檔模板、文檔以及視圖。 CMyApp*pMyApp=(CMyApp*)AfxGetApp()。 POSITION p=pMyAppGetFirstDocTemplatePosition()。 while(p!=NULL) { CDocTemplate*pDocTemplate=pMyAppGetNextDocTemplate(p)。 POSITION p1=pDocTemplateGetFirstDocPosition()。 while(p1!=NULL) { 河南師范大學(xué)本科畢業(yè)論文 11 CDocument*pDocument=pDocTemplateGetNextDoc(p1)。 POSITION p2=pDocumentGetFirstViewPosition()。 while(p2!=NULL) { CView*pView=pDocumentGetNextView(p2)。 } } } 在 MFC 程序設(shè)計(jì)中,利用文檔類來保存系統(tǒng)的數(shù)據(jù)。遵循這個(gè)原則,本系統(tǒng)中在CGEngineerDoc 文檔類中存儲(chǔ)并維護(hù)一個(gè)圖形對(duì)象鏈表。當(dāng)用戶在工作區(qū)建立圖標(biāo)或者搭建仿真模型時(shí),每當(dāng)在工作區(qū)中畫入一個(gè)圖元或圖標(biāo)(圖標(biāo)由基本圖元或其他的圖標(biāo)構(gòu)成),都會(huì)將其加入到圖形對(duì)象鏈表中來。圖形對(duì)象鏈表的定義如下: typedef CTypedPtrListCObList,CDrawObj*CDrawObjList。 CDrawObjList*m_pObjects。 視圖是對(duì)文檔中存儲(chǔ)的數(shù)據(jù)的一種直觀表現(xiàn),利用 CGEngineerView 類中的OnDraw(CDC*pDC)函數(shù),能把文檔中存儲(chǔ)的圖形對(duì)象列表中的所有圖形對(duì)象繪制在用戶工作區(qū)中。 圖形建模的技術(shù)難點(diǎn)實(shí)現(xiàn) 在開發(fā)圖形建模系統(tǒng)的過程中,不可避免的遇到了很多難點(diǎn)問題, 這里 選擇了幾個(gè)具有代表性的難點(diǎn)解決方案,這些方案并不見得是最佳的解決方案,但經(jīng)過作者的驗(yàn)證都取得了令人滿意的效果。 連接線形狀自適應(yīng)功能的實(shí)現(xiàn) 在進(jìn)行圖形建模的時(shí)候,圖標(biāo)之間的搭接是構(gòu)建仿真模型過程中非常重要的一個(gè)步驟。利用連接線工具對(duì)工作區(qū)中的圖標(biāo)進(jìn)行搭接時(shí),如果連接線的形狀能 夠自適應(yīng),將會(huì)給用戶帶來很大的方便。連接線形狀自適應(yīng)即是根據(jù)兩個(gè)圖標(biāo)的相對(duì)位置以及圖標(biāo)中連接點(diǎn)的相對(duì)位置自動(dòng)調(diào)整自身的形狀,自動(dòng)繞開所連接的兩個(gè)圖標(biāo),而不會(huì)壓在圖標(biāo)上面。當(dāng)然用戶在需要的時(shí)候還可以任意調(diào)整連接線的形狀。 解決這個(gè)問題時(shí), 根據(jù)連接點(diǎn)在圖標(biāo)外圍矩形中的相對(duì)位置,以及連接線兩端的起始連接點(diǎn)和終止連接點(diǎn)的相對(duì)位置,對(duì)它們進(jìn)行判斷處理 ,在需要的時(shí)候要增加新的轉(zhuǎn)折點(diǎn),重新計(jì)算折線中轉(zhuǎn)折點(diǎn)的位置,并重新繪制連接線。為此,定義了枚舉類型: enum Location{CloseToLeft,CloseToRight,CloseToTop,CloseToBottom, 河南師范大學(xué)本科畢業(yè)論文 12
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1