上海師范大學(xué)計(jì)算機(jī)圖形學(xué)第二章.ppt
《上海師范大學(xué)計(jì)算機(jī)圖形學(xué)第二章.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《上海師范大學(xué)計(jì)算機(jī)圖形學(xué)第二章.ppt(66頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
二 繪圖函數(shù)1 點(diǎn)voidputpixel intx inty intcolor color符號(hào)名 取值為0 15voidmoveto intdeltax intdeltay 例題 當(dāng)前坐標(biāo)CPputpixel 100 200 5 100 200 moveto 50 30 50 30 moverel 10 20 60 50 intgetx void intgety void 2 直線voidline intx0 inty0 intx1 inty1 當(dāng)前坐標(biāo) x y voidlineto intx inty voidlinerel intdeltax intdeltay 當(dāng)前坐標(biāo) x deltax y deltay 例題 arc 40 40 0 120 30 3 矩形voidrectangle intleft inttop intright intbottom 左上角坐標(biāo) left top 右下角坐標(biāo) right bottom 5 多邊形 voiddrawpoly intnumpoints int polypoints numpoints 為多邊形的頂點(diǎn)數(shù)polypoints 各頂點(diǎn)坐標(biāo)的整數(shù)序列共有2 numpoints個(gè)整數(shù) 若第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)坐標(biāo)相同 則畫出封閉多邊形 否則為多邊形折線 多邊形例題 intp 2 6 45 50 75 30 85 75 180 65 70 5 45 50 drawpoly 6 p 45 50 三 顏色控制 1 voidsetbkcolor intcolor 默認(rèn)色為黑色2 voidsetcolor intcolor 設(shè)置當(dāng)前畫線顏色 默認(rèn)色為白色 15 3 intgetbkcolor void 返回當(dāng)前背景色4 intgetcolor void 返回當(dāng)前繪圖顏色5 intgetpixel intx inty 4 圓 圓弧和橢圓voidcircle intx inty intradius voidarc intx inty intstangle intendangle intradius 起始角stangle 終止角endangle0 360 voidellipse intx inty intstangle intendangle intxradius intyradius 從起始角stangle開始畫橢圓弧至終止角endangle xradius yradius分別為方向x y的半徑 0BLACK1BLUE2GREEN3CYAN4RED5MAGENTA6BROWN7LIGHTGRAY 8DRAKGRAY9LIGHTBLUE10LIGHTGREEN11LIGHTCYAN12LIGHTRED13LIGHTMAGENTA14YELLOW15WHITE 6 voidsetlinestyle intlinestyle unsignedupattern intthickness Linestyle取值 SOLID LINE0實(shí)線DOTTED LINE1點(diǎn)線CENTER LINE2中心線DASHED LINE3虛線USERBIT LINE4用戶定義的線upattern僅在userbit line時(shí)起作用 thickness線寬NORM WIDTH1一個(gè)象素寬THICK WIDTH3三個(gè)象素寬 例題 setlinestyle DASHED LINE 0 THICK WIDTH 或setlinestyle 3 0 3 line 300 50 300 200 上機(jī)作業(yè)2 畫出如下圖形 第二章基本圖形的生成和計(jì)算 如何在指定的輸出設(shè)備上描述構(gòu)造基本二維幾何圖形 點(diǎn) 直線 圓 橢圓 多邊形 字符串及其相關(guān)屬性等 2 1直線的生成算法 圖形的掃描轉(zhuǎn)換 在光柵顯示器等數(shù)字設(shè)備上確定一個(gè)最佳逼近于圖形的象素集的過(guò)程 用一系列的象素點(diǎn)來(lái)逼近直線 2 1直線的生成算法 2 1 1直線DDA算法 DigitalDifferentialAnalyser 設(shè)直線起點(diǎn) x1 y1 終點(diǎn) x2 y2 則斜率mm y2 y1 x2 x1 dy dx dy dx Dy Dxxi 1 xi Dxyi 1 yi DyDy m Dx x y 1b 1a 4a 4b 3b 3a 2a 2b xi 1 xi 1yi 1 yi m xi 1 xi 1yi 1 yi m x1 y1 x2 y2 O xi 1 xi 1 myi 1 yi 1 象限D(zhuǎn)xDy象限D(zhuǎn)xDy1a1m4a1 m1b1 m14b1 m 12a 1m2b 1 m13a 1 m3b 1 m 1結(jié)論 1 當(dāng) m 1時(shí) Dx 1 Dy m否則 Dx 1 m Dy 1 結(jié)論 2 Dx Dy的符號(hào)與dx dy的符號(hào)相同 缺點(diǎn) 1 浮點(diǎn)增量的連續(xù)迭加 誤差積累使長(zhǎng)線段計(jì)算的象素位置偏離實(shí)際線段2 浮點(diǎn)運(yùn)算十分耗時(shí) 1965年由Bresenham提出設(shè)直線起點(diǎn) x1 y1 終點(diǎn) x2 y2 y mx bb y1 m x1m y2 y1 x2 x1 dy dx 2 1 2直線Bresenham算法 13 12 11 10 10 11 12 13 11 11 12 11 或 12 12 當(dāng)直線方向限于1a象限 x1 y1 x2 y2 當(dāng)直線方向限于1a象限 則xi 1 xi 1yi 1 yi 1 yi 13 12 11 10 10 11 12 13 xi yi x1 y1 x2 y2 Bresenham算法采取對(duì)整型參量的符號(hào)進(jìn)行檢測(cè) 整型參量的值正比于兩象素與實(shí)際線段之間的偏移yi 1的選擇由d1 d2的大小決定 如d1 d2 則yi 1 yi 1 否則yi 1 yid1 y yid2 yi 1 y d1 d2 2y 2yi 1y m xi 1 bm dy dx d1 y yid2 yi 1 y d1 d2 2dy dx xi 1 2b 2yi 1兩邊 dx 令Pi d1 d2 dx則Pi 2dy xi 1 2b dx 2yi dx dx 2xidy 2yidx 2dy 2b 1 dx 由于dx 0 則Pi可用來(lái)判斷符號(hào)Pi 1 2xi 1dy 2yi 1dx 2dy 2b 1 dx 2 xi 1 dy 2yi 1dx 2dy 2b 1 dx Pi 2dy 2yi 1dx 2yidx Pi 2dy 2 yi 1 yi dx Pi 2xidy 2yidx 2dy 2b 1 dx P1 2x1dy 2y1dx 2dy 2b 1 dx 2x1dy 2y1dx 2dy 2 y1 dy dx x1 1 dx 2x1dy 2y1dx 2dy 2y1dx 2x1dy dx 2dy dx Pi 2xidy 2yidx 2dy 2b 1 dxb y1 m x1 1 畫點(diǎn) x1 y1 dx x2 x1dy y2 y1P1 2dy dxi 12 xi 1 xi 1當(dāng)Pi 0 則yi 1 yi 1 否則yi 1 yi3 畫點(diǎn) xi 1 yi 1 畫線步驟 P1 2dy dx 4 求Pi 1 當(dāng)Pi 0則Pi 1 Pi 2dy 2dx否則Pi 1 Pi 2dy5 i i 1如i dx 1則轉(zhuǎn)2否則結(jié)束 優(yōu)點(diǎn)1 不做除法2 只用整數(shù)3 只有整數(shù)加減和乘2運(yùn)算 例 起點(diǎn) 20 10 終點(diǎn) 30 18 斜率0 8dx 10 dy 8P1 2dy dx 2 8 10 6iPi xi 1 yi 1 123 iPi xi 1 yi 1 45678910 例 起點(diǎn) 20 10 終點(diǎn) 30 18 斜率0 8dx 10 dy 8P1 2dy dx 2 8 10 6iPi xi 1 yi 1 16 21 11 22 22 12 3 2 23 12 iPi xi 1 yi 1 414 24 13 510 25 14 66 26 15 72 27 16 8 2 28 16 914 29 17 1010 30 18 Bresenham畫法對(duì)任意斜率的線段具有通用性 當(dāng)m 0 且m 1 則交換x y之間規(guī)則 2 2圓的生成算法 2 2 1基礎(chǔ)知識(shí)設(shè)圓心坐標(biāo) xc yc 半徑r1 直角坐標(biāo)法 x xc 2 y yc 2 r2 y yc r2 x xc 2 1 2x xc從 r r作加1遞增 可求出y坐標(biāo)但圓周上的點(diǎn)不均勻即象素位置間的間距不一致 2 2圓的生成算法 2 極坐標(biāo)法x xc rcos y yc rsin r 0 4 利用對(duì)稱法則 2 2圓的生成算法 2 2 2圓的Bresenham算法Bresenham圓算法通過(guò)比較象素與圓的距離的平方而避免了平方根運(yùn)算 設(shè)圓心坐標(biāo) 0 0 半徑為r起點(diǎn) 0 r 順時(shí)針?lè)较? 8圓周xi 1 xi 1yi 1 yi或yi 1 yi 1 x y xi xi 1 yi y yi 1 d21 2 d11 2 2 2圓的生成算法 y2 r2 xi 1 2d1 yi2 y2 yi2 r2 xi 1 2d2 y2 yi 1 2 r2 xi 1 2 yi 1 2令Pi d1 d2 2 xi 1 2 yi2 yi 1 2 2r2Pi 1 Pi 4xi 6 2 yi 12 1 yi2 2 yi 12 1 yi2 當(dāng)P 0 則yi 1 yi 否則yi 1 yi 1 2 2圓的生成算法 Pi 1 2 xi 2 2 yi 12 yi 1 1 2 2r2 2 xi 1 2 4xi 6 yi 12 yi 1 1 2 2r2 Pi 4xi 6 yi2 yi 1 2 yi 12 yi 1 1 2 Pi 4xi 6 2 yi 12 yi2 2 yi 1 yi 當(dāng)P1 x1 0 y1 r P1 2 r2 r 1 2 2r2 3 2r 2 3區(qū)域填充算法 2 3 1基本知識(shí)1 區(qū)域填充定義 給出一個(gè)區(qū)域的邊界 要求對(duì)邊界范圍內(nèi)的所有象素單元賦予指定的顏色代碼 最常用的是多邊形填色 2 3區(qū)域填充算法 2 數(shù)學(xué)方法 掃描交點(diǎn)的奇偶數(shù)判斷法1 將多邊形畫在平面上2 用一根水平掃描線從左到右通過(guò)多邊形 從而與多邊形的邊界相交 掃描線與邊界相交奇數(shù)次后進(jìn)入多邊形 偶次數(shù)后走出多邊形 A B C 錯(cuò)判 錯(cuò)判 錯(cuò)判 1 掃描線填色算法 按掃描線順序計(jì)算掃描線與多邊形的相交區(qū)間 再用要求的顏色或圖案顯示這些區(qū)間的象素 需提供多邊形各頂點(diǎn)的坐標(biāo) 填色算法 2 種子填色算法 要求給出邊界顏色特征區(qū)域內(nèi)的一個(gè)點(diǎn)的坐標(biāo) 2 3 2掃描線填色算法 1 用水平掃描線由上往下掃描多邊形2 每根掃描線與多邊形各邊產(chǎn)生一系列交點(diǎn) 采用遞歸算法3 將交點(diǎn)按x坐標(biāo)進(jìn)入分類 將分類后的交點(diǎn)成對(duì)取出 作為兩個(gè)端點(diǎn) 以所需要填的色彩畫水平直線 掃描線與邊的求交點(diǎn)方法采用遞歸算法 以 x1 y1 x2 y2 為端點(diǎn)的邊與第i 1條掃描線的交點(diǎn) yi 1 yi 1 xi 1 xi x2 x1 y2 y1 即xi 1 xi 1 m yi x2 y2 Pi xi yi x1 y1 左右頂點(diǎn)處理 以1 2 3次序畫多邊形外框 左頂點(diǎn)2 y1 y2 y3 右頂點(diǎn)2 y1 y2 y3 一個(gè)頂點(diǎn)同屬于多邊形兩條邊的端點(diǎn) 如果所交的頂點(diǎn)是左頂點(diǎn)或右頂點(diǎn) 填色因掃描交點(diǎn)的奇偶計(jì)數(shù)出錯(cuò)而出現(xiàn)錯(cuò)誤 解決方法 刪去左右頂點(diǎn)的入邊的終點(diǎn) 即1 2邊 2 3 2 對(duì)于左頂點(diǎn) x1 y1 x2 y2 改為 x1 y1 x2 1 m y2 1 對(duì)于右頂點(diǎn) x1 y1 x2 y2 改為 x1 y1 x2 1 m y2 1 刪去水平邊 1 2 3 1 2 3 水平邊處理 刪去水平邊 2 3 3種子填色算法 已知多邊形邊界位置及顏色以及多邊形內(nèi)的一點(diǎn) x y 位置 x y 方法 1 從 x y 開始檢測(cè)相鄰位置以確定它們是否是邊界顏色 若不是 則用填充顏色涂色 并檢測(cè)其相鄰位置 2 直至檢測(cè)完所有象素 常用的 四鄰法和八鄰法 四鄰法不能通過(guò)狹窄區(qū)域 種子填色算法 voidseed filling x y fill color boundary color intx y fill color boundary color intc c inquire color x y if cboundary color 種子填色算法 種子填色算法 上 下 左 右- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 上海師范大學(xué) 計(jì)算機(jī) 圖形學(xué) 第二
鏈接地址:http://m.kudomayuko.com/p-10988497.html