国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)四 OpenGL的鼠標(biāo)交互繪制

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)四 OpenGL的鼠標(biāo)交互繪制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、實(shí)驗(yàn)?zāi)康?/p>

1.掌握OpenGL的鼠標(biāo)按鈕響應(yīng)函數(shù)。

2.掌握OpenGL的鼠標(biāo)移動(dòng)響應(yīng)函數(shù)。

3.進(jìn)一步鞏固OpenGL的基本圖元繪制基礎(chǔ)。

二、實(shí)驗(yàn)內(nèi)容

1.鼠標(biāo)畫草圖——實(shí)現(xiàn)鼠標(biāo)點(diǎn)到哪,線就畫到哪。

思路:

1)在主程序注冊(cè)鼠標(biāo)響應(yīng)和鼠標(biāo)移動(dòng)子函數(shù):

glutMouseFunc(mymouse);

glutMotionFunc(mymotion);

放在display注冊(cè)之后和mainloop之前。

  1. 在程序頭部聲明鼠標(biāo)響應(yīng)和鼠標(biāo)移動(dòng)子函數(shù):
  2. void?myMouse(int?button,int?state,int?x,int?y);
  3. void?myMotion(int?x,int?y);
  4. 3)構(gòu)造鼠標(biāo)響應(yīng)子函數(shù):
  5. //?鼠標(biāo)按鈕響應(yīng)事件
  6. void?myMouse(int?button,int?state,int?x,int?y)
  7. {

//鼠標(biāo)左鍵按下——確定起始點(diǎn)

//鼠標(biāo)左鍵松開(kāi)——畫最后一個(gè)頂點(diǎn),畫線結(jié)束

}文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-419011.html

4)構(gòu)造鼠標(biāo)移動(dòng)子函數(shù):

//鼠標(biāo)移動(dòng)時(shí)獲得鼠標(biāo)移動(dòng)中的坐標(biāo)

void?myMotion(int?x,int?y)

{

//鼠標(biāo)移動(dòng)——線畫到哪

}

5)修改顯示函數(shù)Display():

//畫直線程序框架

#include?"stdafx.h"

#include?<glut.h>

int?ww,hh;?//顯示窗口寬和高

void?Myinit(vold);

void?Reshape?(int?w,?int?h);

void?Display(void);

int?APIENTRY?tWinMain(HINSTANCE?hInstance,

HINSTANCE?hPrevInstance,

LPTSTR?lpCmdLine,

int?nCmdShow)

{

UNREFERENCED?PARAMETER?(hPrevInstance)?;

UNREFERENCED_PARAMETER(1pCmdLine)?;

char?*argvl]?=?("hello?".?

int?argc?=?2;?//?argv?中的字符串?dāng)?shù)

glutInit(6argc,?argv)?;?//?初始化?GLUT?庫(kù)

glutInitWindowSize(800,?600)?;?//?設(shè)置顯示窗口大小

glutInitDisplayMode?(GLUT_DOUBLE?|?GLUT_RGB);?//?設(shè)置顯示模式?(注意雙緩存)glutCreateWindow(”鼠標(biāo)畫線小程序演示");?//?創(chuàng)建顯示窗口

Myinit();

glutDisplayFunc(Display);?//?注冊(cè)顯示回調(diào)函數(shù)

glutReshapeFunc(Reshape);?//注冊(cè)窗口改變回調(diào)函數(shù)

glutMainLoop();?//進(jìn)入事件處理循環(huán)

return?0;

}

void?Myinit(void)

{

glClearColor(0.0,0.0,0.0,0.0);

glLineWidth(3.0);

}

//?渲染繪制子程序

void?Display(void)

{

glClear(GL_COLOR_BUFFER_BIT);?//?刷新顏色緩存區(qū)

g1Begin(GL_LINES);

glVertex2f(0,0);

glVertex2f(ww,hh);

glEnd();

glutSwapBuffers();?//?雙緩存的刷新模式

}

void?Reshape(int?w,?int?h)?//?窗口改變時(shí)自動(dòng)獲取顯示窗口的寬w和高?h

{

glMatrixMode?(GL_PROJECTION)?;?//?投影矩陣模式

qlLoadIdentity();?//?矩陣堆棧清空

glViewport(0,?0,?w,?h);?//?設(shè)置視區(qū)大小

g1uOrtho2D(0,?w,?0,?h);?//?設(shè)置裁剪窗口大小

ww=W;

hh=h;

}

}

  1. 鼠標(biāo)畫線。閱讀OpenGL鼠標(biāo)畫線程序,能夠?qū)崿F(xiàn)在繪制窗口用鼠標(biāo)交互繪制若干條直線,鼠標(biāo)左鍵首先按下確定直線的起始點(diǎn),鼠標(biāo)左鍵按下同時(shí)移動(dòng),看到畫線過(guò)程,鼠標(biāo)左鍵松開(kāi)時(shí)確定直線的終點(diǎn),可重復(fù)畫多條直線。
  2. 思路:
  3. 1)寫出畫靜止若干條直線程序框架,坐標(biāo)用變量替代。
  4. 2)在主函數(shù)里注冊(cè)鼠標(biāo)按鈕響應(yīng)函數(shù)和鼠標(biāo)移動(dòng)響應(yīng)函數(shù)。
  5. 3)在鼠標(biāo)按鈕響應(yīng)子函數(shù)里給出鼠標(biāo)按鈕響應(yīng)事件。
  6. 4)在鼠標(biāo)移動(dòng)響應(yīng)子函數(shù)里給出鼠標(biāo)移動(dòng)響應(yīng)事件。
  7. 5)讀懂程序并分析程序,保留程序。

到了這里,關(guān)于計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)四 OpenGL的鼠標(biāo)交互繪制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)——利用MFC對(duì)話框?qū)崿F(xiàn)多邊形繪制與填充(掃描線填充算法)附源碼

    計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)——利用MFC對(duì)話框?qū)崿F(xiàn)多邊形繪制與填充(掃描線填充算法)附源碼

    內(nèi)容概括: 利用基于對(duì)話框的MFC項(xiàng)目 實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊繪制多邊形 實(shí)現(xiàn)掃描線算法填充多邊形 源碼見(jiàn)Yushan-Ji/ComputerGraphics: ECNU2023秋 計(jì)算機(jī)圖形學(xué)課程實(shí)驗(yàn)代碼 (github.com) 通過(guò)鼠標(biāo)交互輸入多邊形 對(duì)各種多邊形進(jìn)行填充,包括邊界自交的情況 利用 OnLButtonDown 和 OnRButtonDown 函數(shù),

    2024年02月04日
    瀏覽(175)
  • golang,OpenGL,計(jì)算機(jī)圖形學(xué)(三)

    golang,OpenGL,計(jì)算機(jī)圖形學(xué)(三)

    代碼倉(cāng)庫(kù) https://github.com/phprao/go-graphic 顏色 光源照射到物體上,一部分顏色被吸收,另一部分無(wú)法吸收的被反射到人眼,于是呈現(xiàn)出了顏色。 當(dāng)我們把光源的顏色與物體的顏色值 相乘 (而不是點(diǎn)乘),所得到的就是這個(gè)物體所反射的顏色。由此,我們可以定義物體的顏色為

    2024年02月12日
    瀏覽(53)
  • 【計(jì)算機(jī)圖形學(xué)】OpenGL遞歸實(shí)現(xiàn)光線追蹤

    【計(jì)算機(jī)圖形學(xué)】OpenGL遞歸實(shí)現(xiàn)光線追蹤

    計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì):基于面向?qū)ο蟮墓饩€跟蹤算法設(shè)計(jì)與實(shí)現(xiàn) 目錄 一、前言 二、項(xiàng)目實(shí)現(xiàn)與說(shuō)明 1. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 1.1 光線 Ray 1.2 材質(zhì) Material 1.3 光照 Light 1.4 相機(jī) Camera 1.5 球體Sphere 1.6 場(chǎng)景Scene 2. 算法實(shí)現(xiàn) 2.1 光線追蹤算法原理與步驟 2.2 計(jì)算觀察光線 2.3 光線與物體(球

    2024年02月08日
    瀏覽(20)
  • 計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第12章 曲面細(xì)分

    計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第12章 曲面細(xì)分

    術(shù)語(yǔ)Tessellation(鑲嵌)是指一大類設(shè)計(jì)活動(dòng),通常是指在平坦的表面上,用各種幾何形狀的瓷磚相鄰排列以形成圖案。它的目的可以是藝術(shù)性的或?qū)嵱眯缘?,很多例子可以追溯到幾千年前[TS16]。 在3D圖形學(xué)中,Tessellation指的是有點(diǎn)不同的東西(曲面細(xì)分),但顯然是由它的經(jīng)

    2024年02月08日
    瀏覽(34)
  • 計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第11章 參數(shù)曲面

    計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第11章 參數(shù)曲面

    在20世紀(jì)50年代和60年代在雷諾公司工作期間,皮埃爾·貝塞爾(Pierre Bézier)開(kāi)發(fā)了用于設(shè)計(jì)汽車車身的軟件系統(tǒng)。他的程序利用了Paul de Casteljau之前開(kāi)發(fā)的數(shù)學(xué)方程組,后者曾為競(jìng)爭(zhēng)對(duì)手雪鐵龍汽車制造商[BE72,DC63]工作。de Casteljau方程僅使用幾個(gè)標(biāo)量參數(shù)描述曲線,同時(shí)使用

    2024年02月08日
    瀏覽(26)
  • 計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第10章 增強(qiáng)表面細(xì)節(jié)

    計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第10章 增強(qiáng)表面細(xì)節(jié)

    假設(shè)我們想要對(duì)不規(guī)則表面的物體進(jìn)行建模,例如橘子凹凸的表皮、葡萄干褶皺的表面或月球的隕石坑表面。我們?cè)撛趺醋??到目前為止,我們已?jīng)學(xué)會(huì)了兩種可能的方法: (a)我們可以對(duì)整個(gè)不規(guī)則表面進(jìn)行建模,但這么做通常不切實(shí)際(一個(gè)有許多坑的表面需要大量的

    2024年02月09日
    瀏覽(24)
  • 計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第9章 天空和背景

    計(jì)算機(jī)圖形學(xué)與opengl C++版 學(xué)習(xí)筆記 第9章 天空和背景

    對(duì)于室外3D場(chǎng)景,通常可以通過(guò)在地平線上創(chuàng)造一些逼真的效果,來(lái)增強(qiáng)其真實(shí)感。當(dāng)我們極目遠(yuǎn)眺,目光越過(guò)附近的建筑和森林,我們習(xí)慣于看到遠(yuǎn)處的大型物體,例如:云、群山或太陽(yáng)(或夜 空中的星星和月亮)。但是,將這些對(duì)象作為單個(gè)模型添加到場(chǎng)景中可能會(huì)產(chǎn)生

    2024年02月09日
    瀏覽(20)
  • 【計(jì)算機(jī)圖形學(xué)】作業(yè):Bresenham 法繪制圓

    請(qǐng)采用 Bresenham 法繪制圓(共 30 分)。要求: (1) 給出算法的文字描述(共 15 分)。 (2) 編寫函數(shù),在給定圓心坐標(biāo)和半徑的情況下,計(jì)算出圓 上所有的點(diǎn),并將這些點(diǎn)存儲(chǔ)在數(shù)組中(共 15 分)。 輸入圓的圓心(xc,yc),半徑r。數(shù)組circlepoints為輸出,保存圓上所有點(diǎn)。 初

    2024年01月24日
    瀏覽(28)
  • 計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

    計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

    一、實(shí)現(xiàn)方案 ? ? ? ?貝塞爾曲線原理:貝塞爾曲線是計(jì)算機(jī)圖形圖像造型的基本工具,是圖形造型運(yùn)用得最多的基本線條之一。它通過(guò)控制曲線上的四個(gè)點(diǎn)(起始點(diǎn)、終止點(diǎn)以及兩個(gè)相互分離的中間點(diǎn))來(lái)創(chuàng)造、編輯圖形。其中起重要作用的是位于曲線中央的控制線。這條

    2024年02月11日
    瀏覽(25)
  • 計(jì)算機(jī)圖形學(xué)中的曲線問(wèn)題——拉格朗日插值曲線繪制實(shí)踐

    計(jì)算機(jī)圖形學(xué)中的曲線問(wèn)題——拉格朗日插值曲線繪制實(shí)踐

    限于篇幅,我們將在這篇文章中介紹拉格朗日插值曲線繪制實(shí)踐,主文章鏈接: GGN_2015 計(jì)算機(jī)圖形學(xué)中的曲線問(wèn)題 在主文章中我們已經(jīng)介紹了拉格朗日插值函數(shù)的繪制方法。給定一個(gè)函數(shù)必須通過(guò)的點(diǎn)的集合,保證任意兩點(diǎn) x x x 指不同,我們就能構(gòu)造出一條拉格朗日插值函

    2024年02月14日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包