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

正文內(nèi)容

基于opengl的3d旋轉(zhuǎn)魔方的實(shí)現(xiàn)--終期報(bào)告加源碼-展示頁(yè)

2024-11-24 15:13本頁(yè)面
  

【正文】 SZM[9] = {18,19,20,21,22,23,24,25,26}。 ?? glEnd()。 glTexCoord(,)。 創(chuàng)建紋理的存儲(chǔ)空間 TextuteImage[i]=auxDIBImageLoad(“picture/) 調(diào)用此函數(shù)六次載入六張不同的圖片 glGenTexTures(1,amp。 const BYTE SZP[9] = {0,1,2,3,4,5,6,7,8}。 由于涉及到動(dòng)態(tài)刷新索引,于是按照常理定義一個(gè)靜態(tài)的魔方 與動(dòng)態(tài)的魔方進(jìn)行比較。當(dāng)然,你也可以讓每層每個(gè)周期轉(zhuǎn)動(dòng) 360 度,這樣就不需要?jiǎng)討B(tài)更新索引了,因?yàn)槊看无D(zhuǎn)動(dòng)前后 ,立方體的相對(duì)坐標(biāo)位置并沒(méi)有改變。 /x 軸方向中間一層 BYTE XP[9] = {0,5,6,15,14,9,18,23,24}。 //y 軸方向正向一層 BYTE XM[9] = {2,3,8,17,12,11,20,21,26}。 //y 軸方向負(fù)向一層 5 BYTE YZ[9] = {3,4,5,14,13,12,21,22,23}。 //z 軸方向中間一層 BYTE ZM[9] = {18,19,20,21,22,23,24,25,26}。其中編號(hào)為 BYTE ZP[9] = {0,1,2,3,4,5,6,7,8}。根據(jù)2 階魔方的一些方法,類(lèi)比到 3 階魔方。 Cube[0].CubePoint[i].p[2] = CubePoint[i].p[2]+。i++) { Cube[0].CubePoint[i].p[0] = CubePoint[i].p[0] 。 平移單個(gè)立方體通過(guò) reset_model( )函數(shù)中的語(yǔ)句實(shí)現(xiàn) for(i=0。 ? 設(shè)置 繪圖環(huán)境像素格式: SetPixelFormat(hDC,PixelFormat,amp。 Window 窗體創(chuàng)建步驟: ? 窗體類(lèi)注冊(cè): RegisterClass ? 設(shè)置顯示分辨率: ChangeDisplaySettings ? 設(shè)置窗體大?。?AdjustWindowRectEx ? 創(chuàng)建窗體: CreateWindowEx OpenGL 繪圖環(huán)境搭建: ? 獲取設(shè)備繪圖環(huán)境 (DC, DeviceContext): hDC=GetDC(hWnd) ? 選擇繪圖環(huán)境像素格式: ChoosePixelFormat(hDC,amp。在 WinMain函數(shù)里實(shí)現(xiàn) Window是窗體的建立和消息循環(huán),在消息循環(huán)中實(shí)現(xiàn)鍵盤(pán)、鼠標(biāo)輸入事件處理響應(yīng),具體內(nèi)容可參考 VC程序參考手冊(cè)。為了簡(jiǎn)化算法,只需查找旋轉(zhuǎn)后 Cube[i]在 Static_Cube中對(duì)應(yīng)的小立方編號(hào) j與 i的位置匹配。由于魔方體層面的旋轉(zhuǎn)是 90176。 pCubeCubePoint[i].p[1] = x*sina + y*cosa。 y= pCubeCubePoint[i].p[1]。i++) { float x,y。 立方體在空間的旋轉(zhuǎn),歸根到底是其頂點(diǎn)的旋轉(zhuǎn),如空間點(diǎn) (x, y, z)繞 Z軸旋轉(zhuǎn) a對(duì)應(yīng)的旋轉(zhuǎn)矩陣: cosa sina sina cosa 一個(gè)立方體 pCube繞 Z軸旋轉(zhuǎn) a后對(duì)應(yīng)的坐標(biāo)變化為: 3 for( int i=0。 一個(gè)立方體由 8個(gè)點(diǎn)組成, 8個(gè)點(diǎn)組成 6個(gè)面片,對(duì)立方體的幾何操作本質(zhì)上就是對(duì)這 6個(gè)平面的操作 (繪制、紋理、旋轉(zhuǎn)和平移等 )。通過(guò)讀取載入 BMP 文件,應(yīng)用紋理貼圖技術(shù)來(lái)完成對(duì)魔方旋轉(zhuǎn)面的處理。 本設(shè)計(jì)是在 Visual C++ 開(kāi)發(fā) 環(huán)境下,使用 OpenGL( Open Graphics Library)函數(shù)庫(kù),繪制魔方并實(shí)現(xiàn)魔方的 繪制、隨機(jī)旋轉(zhuǎn)、貼圖以及鍵盤(pán)控制等功能。同時(shí),為了增加程序的娛樂(lè)效果,我加入了歌曲最炫民族風(fēng),雖然很簡(jiǎn)單,不過(guò)感覺(jué)非常實(shí)用且有趣。參考 Magic2D 例子流程,我對(duì)原程序進(jìn)行了比較大的修改,并換上了自己的圖片,實(shí)現(xiàn)了一個(gè)立方體貼六張不同的圖片,并編寫(xiě)出了自己的 2X2 魔方程序。在此次項(xiàng)目中,學(xué)習(xí)了 Visual C++ 軟件開(kāi)發(fā)環(huán)境,熟練掌握了 Win32 Application 開(kāi)發(fā)流程。對(duì)于國(guó)家而言,極大的推動(dòng)了計(jì)算機(jī)普及教育,提高了大學(xué)生的計(jì)算機(jī)使用水平,具有重大的意義。通過(guò)此次課程設(shè)計(jì),可以鍛煉編程能力,激發(fā)對(duì)編程的興趣,同時(shí)也能培養(yǎng)良好的編程習(xí)慣。雖然我們?cè)谇捌谝呀?jīng)學(xué)習(xí)了 C 語(yǔ)言,但是還只對(duì)程序有一些簡(jiǎn)單的認(rèn)識(shí),說(shuō)實(shí)話(huà),是很淺顯的認(rèn)識(shí)。華中科技大學(xué)電子科學(xué)與技術(shù)系 課程設(shè)計(jì)報(bào)告 ( 2020 2020 年度第 2 學(xué)期 ) 名 稱(chēng): 軟件課程設(shè)計(jì) 題 目: 基于 OpenGL 的 3D 旋轉(zhuǎn)魔方實(shí)現(xiàn) 院 系: XXXXXX 班 級(jí): XXXXX 學(xué) 號(hào): U202020185 學(xué)生姓名: X X X 指導(dǎo)教師 : X X X 設(shè)計(jì)周數(shù): XXXX 成 績(jī): 日期: 2020 年 5 月 24 日 1 目 錄 1. 課程設(shè)計(jì)介紹……………………………………… … …………………… 1 … ……… ………… … …… ………………………………………… 1 …… … …………………… ……………………………………… … 1 …… … …… ……… … … ………………… ………………… 1 2. 程序分析 …………………………………………………… …………… 2 . 程序原理 … ……………… … … ………………………………………… 2 . 程序流程 … ……………… … … ………………………………………… 3 . 數(shù)據(jù)結(jié)構(gòu) … ……………… … … ………………………………………… 8 . 重要函數(shù)用法分析 … … ……………… … … …………………………… 8 3. 結(jié)果演示與程序分析 … ………………………………… ………… …… 9 . 成果演示 … ……………… … … ………………………………………… 9 . 程序分析 ……………… … … ………………………………………… 11 4. 編程中遇到的問(wèn)題……………… ………… ……………………………… 12 5. 課程設(shè)計(jì)小結(jié) ………………………… ………………… …… …………… 13 參考文獻(xiàn)………………………………………………… …… ……………… 14 1 基于 OpenGL 的 3D 旋轉(zhuǎn)魔方實(shí)現(xiàn) 1. 課程設(shè)計(jì)介紹 目的 當(dāng)今計(jì)算機(jī)技術(shù)流行,引領(lǐng)了各行各業(yè)。而程序是計(jì)算機(jī)的靈魂,因此編程能力對(duì)當(dāng)今 的學(xué)生而言至關(guān)重要。通過(guò)本軟件課程設(shè)計(jì)的學(xué)習(xí),可以從整體上對(duì)軟件工程和項(xiàng)目有全面的認(rèn)識(shí)。這對(duì)于個(gè)人今后的學(xué)習(xí),今后的工作乃至今后的生活都會(huì)產(chǎn)生重要的影響。 內(nèi)容 ( 1) 通過(guò)此次項(xiàng)目掌握軟件開(kāi)發(fā)模式, 模塊化 結(jié)構(gòu) 分析以及程序設(shè)計(jì)流程 ( 2) 學(xué)會(huì)使用 VC++ 進(jìn)行編 程 ( 3) 掌握有關(guān)程序設(shè)計(jì)的思想,數(shù)據(jù)結(jié)構(gòu)的知識(shí),掌握 C 語(yǔ)言算法,掌握 OpenGL編程知識(shí)如貼圖與鍵盤(pán)控制 ( 4) 掌握 win32 編程知識(shí),了解 windows 程序內(nèi)部運(yùn)行機(jī)制 ( 5) 初步培養(yǎng)需求分析、軟件測(cè)試、調(diào)試的能力 ( 6) 在 2X2 魔方的基礎(chǔ)上,嘗試編寫(xiě) 3X3 的魔方,并實(shí)現(xiàn)其旋轉(zhuǎn) 取得的成果 在理解 Magic2D 例子程序的基礎(chǔ)上,借助了 Win32 平臺(tái)進(jìn)行了一系列調(diào)試和學(xué)習(xí)。同時(shí)也學(xué)習(xí)了 OpenGL 的基本知識(shí),掌握了一 些 OpenGL 的重要技術(shù)與重要函數(shù)的使用,編寫(xiě)了一些簡(jiǎn)單的 OpenGL 程序。根據(jù)相似度分析,成功的編寫(xiě)出了 3X3 旋轉(zhuǎn)魔方,并自己設(shè)計(jì)了算法,實(shí)現(xiàn)了各個(gè)層面的轉(zhuǎn)動(dòng),轉(zhuǎn)動(dòng)效果很 完美。 2 2. 程序分析 程序原理 ( 1) OpenGL OpenGL 是一個(gè)開(kāi)放的三維圖形 軟件包 ,它獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開(kāi)發(fā)的應(yīng)用程序可以十分方便地在各種平臺(tái)間移植; OpenGL 可以與 Visual C++緊密接口,便于實(shí)現(xiàn)機(jī)械手的有關(guān)計(jì)算和圖形算法,可保證算法的正確性和可靠性;OpenGL 使用簡(jiǎn)便,效率高。 采用基本圖形的繪圖函數(shù)及定位函數(shù),添加相應(yīng)紋理來(lái)實(shí)現(xiàn)魔方模型的繪制。 ( 2) 模型的旋轉(zhuǎn) 首先對(duì)立方體進(jìn)行建模。點(diǎn)的索引號(hào)確定后,每個(gè)面片也就確定了,如 {0,1,2,3}四個(gè)點(diǎn)構(gòu)成 Z向正投影面。i8。 x= pCubeCubePoint[i].p[0]。 pCubeCubePoint[i].p[0] = x*cosa y*sina。 } 其它軸的旋轉(zhuǎn)類(lèi)似。在某個(gè)層面內(nèi)一個(gè)子立方體 Ci會(huì)被另外一個(gè) Cj完全替換,因此旋轉(zhuǎn)后必須同步更新魔方體 Cube各層面內(nèi)包含的子立方的索引號(hào)。 程序的流程 通過(guò)分析,整個(gè)程序大致可以分為 6個(gè)子 功能模塊 ( 1) Win32應(yīng)用程序框架 WinMain主函數(shù)是所有 Win32程序的入口點(diǎn)。在本課程程序中,不僅要?jiǎng)?chuàng)建 Window窗體,而且構(gòu)建OpenGL設(shè)備繪圖環(huán)境。pfd),其中 pfd 為像素格式描述符,如果設(shè)置不對(duì), OpenGL 繪圖失敗,看不到正確的顯示結(jié)果。pfd) 4 ? 獲取 OpenGL 繪圖環(huán)境: hRC =wglCreateContext(hDC) ? 設(shè)置 OpenGL 繪圖環(huán)境: wglMakeCurrent(hDC,hRC) ( 2) 空間建模得到 3 階魔方 顯然,要建立 3X3 的魔方必須首先建立單個(gè)魔方的模型,然后通過(guò)對(duì)單個(gè)立方體進(jìn)行平移從而得到 3X3 的魔方。i8。 Cube[0].CubePoint[i].p[1] = CubePoint[i].p[1] 。 } 上述代碼只得到了編號(hào)為 0 的立方體,其他編號(hào)的立方體同理可以得到 構(gòu)成 2X2 的魔方需要 8 個(gè)立方體,構(gòu)建 3X3 的魔方則需要 27 個(gè)立方體。則首先對(duì)魔方的立方體進(jìn)行編號(hào),然后通過(guò)編號(hào)得到魔方各層所包含立方體的編號(hào)。 //z 軸方向正向一層 BYTE ZZ[9] = {9,10,11,12,13,14,15,16,17}。 //z 軸方向負(fù)向一層 BYTE YM[9] = {0,1,2,11,10,9,18,19,20}。 //y 軸方向中間一層 BYTE YP[9] = {6,7,8,17,16,15,24,25,26}。 //x 軸方向正向一層 BYTE XZ[9] = {1,4,7,16,13,10,19,22,25}。 //x 軸方向負(fù)向一層 ( 3) OpenGL 紋理貼圖 以下是紋理貼圖的流程,其中實(shí)現(xiàn)了一個(gè)立方體貼六張圖片 ( 4)同步更新 索引 在整個(gè)程序中,同步更新索引所涉及到的算法可以算是最核心的了。但是這樣得到的旋轉(zhuǎn)效果并不好,因?yàn)檫@并沒(méi)有考慮到魔方旋轉(zhuǎn)的所有情況,每次旋轉(zhuǎn)后魔方都沒(méi)有被打亂。類(lèi)似動(dòng)態(tài)魔方的編號(hào)可以得到靜態(tài)魔方的編號(hào)。 //z 軸方向正向一層 GLuint texture[6] 創(chuàng)建紋理存儲(chǔ) AUX_RGBImageRec* TextureImage[6]。texture[i]) 用載入的圖像生成六個(gè)紋理 glBindTextures(GL_TEXTURE_2D,texture[i] 選擇生成的紋理 glBegin(GL_QUADS)。 glVertex3fv(CubePoint[0].p)。 每次選 擇不同的紋理, 然后 利用OpenGL 是狀態(tài)機(jī)的性質(zhì),可以給每個(gè)面貼上不同的圖片 6 const BYTE SZZ[9] = {9,10,11,12,13,14,15,16,17}。 //z 軸方向負(fù)向一層 const BYTE SYM[9] = {0,1,2,11,10,9,18,19,20}。 //y 軸方向中間一層 const BYTE SYP[9] = {6,7,8,17,16,15,24,25,26}。 //x 軸方向正向一層 const BYTE SXZ[9] = {1,4,7,16,13,10,19,22,25}。 //x 軸方向負(fù)向一層 然后編寫(xiě)一
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1