1. 程式人生 > >計算機圖形學第五章---基本圖形生成演算法

計算機圖形學第五章---基本圖形生成演算法

第五章基本圖形生成演算法

如何在指定的輸出裝置上根據座標描述構造基本二維幾何圖形(點、直線、圓、橢圓、多邊形域、字串及其相關屬性等)。

圖形生成的概念

圖形的生成:是在指定的輸出裝置上,根據座標描述構造二維幾何圖形。

圖形的掃描轉換:在光柵顯示器等數字裝置上確定一個最佳逼近於圖形的象素集的過程。

直線段的掃描轉換

直線的繪製要求

1)直線要直;

2)直線的端點要準確,無定向性無斷裂;

3)直線的亮度、色澤要均勻;

4)畫線的速度要快;

5)具有不同的色澤、亮度、線型等。

解決的問題:給定直線兩端點P0(x0,y0)P1(x1,y1),畫出該直線。

數值微分法

(DDA):

增量演算法

直觀、易實現

不利於用硬體實現

中點Bresenhan演算法:

演算法原理:根據直線的斜率確定或選擇變數在xy方向上每次遞增一個單位,而另一方向的增量為10,它取決於實際直線與相鄰象素點的距離,這一距離稱為誤差項。

中點Bresenham演算法——演算法步驟

輸入直線的兩端點P0(x0,y0)P1(x1,y1)

計算初始值△x、△yD=x-2yx=x0y=y0

繪製點(x,y)。判斷D的符號。若D<0,則(x,y)更新為(x+1,y+1)D更新為D+2x-2y;否則(x,y)更新為(x+1,y), D更新為D-2y

當直線沒有畫完時,重複上一步驟,否則結束。

改進的Bresenhan演算法——演算法步驟

1.輸入直線的兩端點P0(x0,y0)P1(x1,y1)

2.計算初始值△x、△ye=-xx=x0y=y0

3.繪製點(x,y)

4.e更新為e+2y,判斷e的符號。若e>0,則(x,y)更新為(x+1,y+1),同時將e更新為e-2x;否則(x,y)更新為(x+1,y)

5.當直線沒有畫完時,重複步驟34。否則結束。

圓的掃描轉換

解決的問題:繪出圓心在原點,半徑為整數R的圓x2+y2=R2

簡單方程產生圓弧:

演算法原理:利用其函式方程,直接離散計算。

中點Bresenham畫圓——演算法步驟

1.輸入圓的半徑R

2.計算初始值d=1-Rx=0y=R

3.繪製點(x,y)及其在八分圓中的另外七個對稱點。

4.判斷d的符號。若d<0,則先將d更新為d+2x+3,再將(x,y)更新為(x+1,y);否則先將d更新為d+2(x-y)+5,再將(x,y)更新為(x+1,y-1)

5.x<y時,重複步驟34。否則結束。

多邊形的掃描轉換與區域填充:

多邊形的掃描轉換主要是通過確定穿越區域的掃描線的覆蓋區間來填充。

區域填充是從給定的位置開始塗描直到指定的邊界條件為止。

多邊形的掃描轉換:

頂點表示用多邊形的頂點序列來刻劃多邊形。

點陣表示是用位於多邊形內的象素的集合來刻劃多邊形。

掃描轉換多邊形:從多邊形的頂點資訊出發,求出位於其內部的各個象素,並將其顏色值寫入幀快取中相應單元的過程。

X-掃描線演算法——原理

基本思想:按掃描線順序,計算掃描線與多邊形的相交區間,再用要求的顏色顯示這些區間的所有象素。

X-掃描線演算法——演算法步驟

1.確定多邊形所佔有的最大掃描線數,得到多邊形頂點的最小和最大y值(yminymax)。

2.y=yminy=ymax,每次用一條掃描線進行填充。

3.對一條掃描線填充的過程可分為四個步驟:

求交;排序;交點配對;區間填色。

X-掃描線演算法——取整規則

交點的取整規則:使生成的畫素全部位於多邊形之內。(用於直線等圖元掃描轉換的四捨五入原則可能導致部分畫素位於多邊形之外,從而不可用)。

假定非水平邊與掃描線y=e相交,交點的橫座標為x,規則如下:

規則1X為小數,即交點落於掃描線上兩個相鄰畫素之間時:

交點位於左邊界之上,向右取整;

交點位於右邊界之上,向左取整;

規則2:邊界上象素的取捨問題,避免填充擴大化。規定落在右邊邊界上的畫素不予填充。(具體實現時,只要對掃描線與多邊形的相交區間左閉右開)

規則3:當掃描線與多邊形頂點相交時,交點的取捨,保證交點正確配對。

解決方法:

當掃描線與多邊形的頂點相交時,

若共享頂點的兩條邊分別落在掃描線的兩邊,交點只算一個;

若共享頂點的兩條邊在掃描線的同一邊,這時交點作為零個或兩個。

實際處理:只要檢查頂點的兩條邊的另外兩個端點的Y值,兩個Y值中大於交點Y值的個數是012,來決定取012個交點。

改進的有效邊表演算法:

改進原理:

處理一條掃描線時,僅對有效邊求交。

利用掃描線的連貫性。

利用多邊形邊的連貫性。

改進的有效邊表演算法(Y連貫性演算法)

有效邊(Active Edge):指與當前掃描線相交的多邊形的邊,也稱為活性邊。

有效邊表(Active Edge Table, AET):把有效邊按與掃描線交點x座標遞增的順序存放在一個連結串列中,此連結串列稱為有效邊表。

有效邊表的每個結點:

xymax1/knext

改進的有效邊表演算法——構造邊表

首先構造一個縱向連結串列,連結串列的長度為多邊形所佔有的最大掃描線數,連結串列的每個結點,稱為一個桶,則對應多邊形覆蓋的每一條掃描線

將每條邊的資訊鏈入與該邊最小y座標(ymin )相對應的桶處。也就是說,若某邊的較低端點為ymin,則該邊就放在相應的掃描線桶中。

每條邊的資料形成一個結點,內容包括:該掃描線與該邊的初始交點x(即較低端點的x值),1/k,以及該邊的最大yymax

x|yminymax1/kNEXT

同一桶中若干條邊按X|ymin由小到大排序,若X|ymax 相等,則按照1/k由小到大排序。

改進的有效邊表演算法——演算法步驟

(1)初始化:構造邊表,AET表置空;

(2)將第一個不空的ET表中的邊與AET表合併;

(3)AET表中取出交點對進行填充。填充之後刪除y=ymax的邊;

(4)yi+1=yi+1,根據xi+1=xi+1/k計算並修改AET表,同時合併ET表中y=yi+1桶中的邊,按次序插入到AET表中,形成新的AET表;

(5)AET表不為空則轉(3),否則結束。

邊緣填充演算法:

基本思想:按任意順序處理多邊形的每條邊。處理時,先求出該邊與掃描線的交點,再對掃描線上交點右方的所有象素取反。

演算法簡單,但對於複雜圖型,每一象素可能被訪問多次

柵欄填充演算法:

柵欄指的是一條過多邊形頂點且與掃描線垂直的直線。它把多邊形分為兩半。

基本思想:按任意順序處理多邊形的每一條邊,但處理每條邊與掃描線的交點時,將交點與柵欄之間的象素取反。

這種演算法儘管減少了被重複訪問象素的數目,但仍有一些象素被重複訪問。

邊標誌演算法:

基本思想:先用特殊的顏色在幀快取中將多邊形的邊界勾畫出來,然後將著色的象素點依x座標遞增的順序配對,再把每一物件素構成的區間置為填充色。

分為兩個步驟:打標記;填充。

當用軟體實現本演算法時,速度與改進的有效邊表演算法相當,但本演算法用硬體實現後速度會有很大提高。

區域填充

基本概念:

區域填充是指從區域內的某一個象素點(種子點)開始,由內向外將填充色擴充套件到整個區域內的過程。

區域是指已經表示成點陣形式的填充圖形,它是相互連通的一組畫素的集合。

區域的表示方法:

邊界表示法:把位於給定區域的邊界上的象素一一列舉出來的方法。

邊界表示法中,由於邊界由特殊顏色指定,填充演算法可以逐個象素地向外處理,直到遇到邊界顏色為止,這種方法稱為邊界填充演算法(Boundary-fill Algorithm)。

內點表示法:枚舉出給定區域內所有象素的表示方法。以內點表示法為基礎的區域填充演算法稱為泛填充演算法(Flood-fill Algorithm)。

區域的分類:

4-連通區域:從區域上的一點出發,通過訪問已知點的4-鄰接點,在不越出區域的前提下,遍歷區域內的所有象素點。

8-連通區域:從區域上的一點出發,通過訪問已知點的8-鄰接點,在不越出區域的前提下,遍歷區域內的所有象素點。

4連通與8連通區域的區別:

相關推薦

計算機圖形---基本圖形生成演算法

第五章基本圖形生成演算法 如何在指定的輸出裝置上根據座標描述構造基本二維幾何圖形(點、直線、圓、橢圓、多邊形域、字串及其相關屬性等)。 圖形生成的概念 圖形的生成:是在指定的輸出裝置上,根據座標描述構造二維幾何圖形。 圖形的掃描轉換:在光柵顯示器等數字裝置上確

資料鏈路層與區域網_計算機網路原理_自考本科段

概要:計算機網路原理第五章資料鏈路層與區域網小結 1、資料鏈路層服務 識記:資料鏈路層功能 (1)資料鏈路層功能:負責通過一條鏈路,從一個節點想另一個物理鏈路直接相連的相鄰節點,傳送網路層資料報,中間不經過其他仍和交換節點。實現物理鏈路直接項鍊的相鄰節點間的資料報傳輸。  

計算機網路】 資料鏈路層(1)

一.資料鏈路層服務 1. 概述 (1)術語   ·主機和路由器:結點   ·連線相鄰結點的通訊通道:鏈路(有線、無線、區域網)   ·鏈路層資料分組:幀 (2)資料鏈路層主要任務:通過一條鏈路從一個結點向另一個物理鏈路直接相連的相鄰結點傳送資料報 2. 鏈路層服務 (1)組幀   ·封裝資料

計算機網路】 資料鏈路層(2)

三.多路訪問控制(MAC)協議 1. 兩類鏈路 (1)點對點鏈路:撥號接入的PPP、乙太網交換機與主機間的點對點鏈路 (2)廣播鏈路(共享介質):早期的匯流排乙太網、HFC的上行鏈路、802.11無線區域網 2. 基本概念 (1)單一共享廣播通道 (2)兩個或兩個以上結點同時傳輸,則發生衝突;結點

計算機網路】 資料鏈路層(3)

四.ARP協議 1. MAC地址(LAN地址、實體地址、乙太網地址) (1)作用:用於區域網內標識一個幀從哪個介面發出,到達哪個物理相連的其他介面 (2)固化在網絡卡的ROM中(唯一的),有時可以軟體設定 (3)表示:十六進位制、六個位元組,如1A-2F-BB-76-09-AD (4)管理:IEEE

計算機組成原理之中央處理器CPU

中央處理器CPU 整個計算器所有部件都由控制器所控制,CPU集成了控制器和運算器。 資料和指令進出CPU都要先經過緩衝暫存器。指令暫存器用來存放當前正在執行的指令。PC用來存放下一條要執行的指令,地址暫存器存放CPU當前需要訪問的記憶體的地址。 程式執行之前,所有的指令都要先放入儲存器,

讀書筆記之《計算機網路》--- 運輸層

本章目錄 運輸層協議概述 使用者資料報協議UDP 傳輸控制協議TCP概述 可靠傳輸的工作原理 TCP報文段首部格式 TCP可靠傳輸的實現 TCP流量控制 TCP擁塞控制 TCP的運輸連線管理 運輸層協議概述 兩個主機進行通訊其實就是兩個主機中的應用程序互相通

cs app深入理解計算機系統: 優化程式效能 幾個優化的java實現

package combine; import java.util.Random; /** * csapp優化程式效能從不同角度 * @author Administrator * */ public class Combine { static double

計算機網路教程運輸層課後習題答案

第五章   傳輸層5—01         試說明運輸層在協議棧中的地位和作用,運輸層的通訊和網路層的通訊有什麼重要區別?為什麼運輸層是必不可少的?答:運輸層處於面向通訊部分的最高層,同時也是使用者功能中的最低層,向它上面的應用層提供服務     運輸層為應用程序之間提供端到

Linux就該這麽--

超級 驗證密碼 空密碼 其他人 功能 同時 同步 user suid 用戶身份和能力 • UID:用戶的身份號碼 ◇ 0 管理員,系統的管理用戶root ◇ 1-999 系統用戶,默認的服務會有獨立的系統用戶負責運行,防止黑客提權 ◇ >1

演算法導論》22——基本的圖演算法

  雖然寫這個部落格主要目的是為了給我自己做一個思路記憶錄,但是如果你恰好點了進來,那麼先對你說一聲歡迎。我並不是什麼大觸,只是一個菜菜的學生,如果您發現了什麼錯誤或者您對於某些地方有更好的意見,非常歡迎您的斧正! 圖的搜尋指的是系統化地跟隨圖中的邊來訪問圖中的每個結點。

計算機圖形--曲線及曲面基本定義

http alt 計算機 font sof png 圖形學 基礎 曲面 曲線曲面基礎: 位置矢量: 切矢量: 曲率: 法矢量: 撓率 插值 擬合:

【《Real-Time Rendering 3rd》 提煉總結】(四) · 圖形渲染與視覺外觀 The Visual Appearance

這篇文章將總結和提煉《Real-Time Rendering 3rd》(實時渲染圖形學第三版)的第五章“Visual Appearance(視覺外觀)”的內容。壹·導讀當我們渲染三維模型的影象時,模型不僅要有適當的幾何形狀,還應該有所需的視覺外觀。《Real-Time Ren

計算機圖形基礎() 光照1

基礎就不記錄了,只記錄有關數學的東西 彩色光源 紅綠藍分量 環境光ambient 漫反射diffuse 鏡面反射specular 環境光 表徵場景中每一處的Ia都是相同的 點光源 理想的電光源向所有方面發射的光線強度都相等。

深入理解計算機系統 大略和大略

$0 一個 編譯 存儲器 系統 32位 做了 ++i 擴展 這2章總結的很少,主要是覺得沒那麽重要。 1.2個操作數的指令,第二個操作數通常是目的操作數:movb a b,move a to b,而add a b,b+=a,指令分為指令類,如mov類:movb,movw,m

提供跟老男孩Linux運維Shell編程實戰的四、源代碼

linux shell 第四章是講Shell變量知識進階與實踐;第五章是講變量的數值計算實踐;附件中包括源碼,請下載。該兩章在學習時要註意相關事項:1.註意標點符號的使用:例如,單引號,反引號,雙引號等;2.註意該要留空格的留空格;3.註意特殊變量的作用;4.內置變量的使用;5.算術運算任的使用。本文

算法入門經典- 例題 5-5 集合棧計算機

urn cto str ack iostream 如果 tca cnblogs amp The SetStack Computer Time limit: 3.000 seconds 題目是這樣的: 有一個專門為了集合運算而設計的“集合棧”計算機。該機器有

:Python 之 RabbitMQ 基本示例

rabbitmq#send 端import pikacredentials = pika.PlainCredentials(‘root‘, ‘Password1‘)connection = pika.BlockingConnection(pika.ConnectionParameters(‘10.3.151.

密碼與安全技術

height 對數 ffi secure ace 因此 常見算法 混合 space 一、Hash算法與數字摘要 1. Hash定義 Hash算法,能將任意長度的二進制明文串映射為較短的(通常是固定長度的)二進制串(Hash值) 特點:正向快速、逆向困難、輸入敏感、沖突

—併發性:互斥和同步【計算機作業系統】

5.1 列出與併發相關的四種設計問題 程序間的互動,共享資源之間的競爭,多個程序的同步問題,對程序的處理器時間分配問題 5.2 列出併發的三種上下文 多個應用程式,結構化應用程式,作業系統結構 5.3 執行併發程序的最基本要求是什麼? 加強互斥的能力 5.4 列出程