




已閱讀5頁,還剩139頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
計(jì)算機(jī)圖形學(xué) 第5章圖形變換與觀察 ComputerGraphics 第5章圖形變換與觀察 二維幾何變換三維幾何變換投影變換三維觀察流程裁剪OpenGL中的圖形變換 第五章圖形變換與觀察 只改變組成形體的幾何元素的幾何信息 大小 形狀及相對位置 而不改變圖形拓?fù)湫畔⒌淖儞Q稱為幾何變換 圖形變換是計(jì)算機(jī)圖形學(xué)的基礎(chǔ)內(nèi)容之一 通過圖形變換 可以改變形體或圖形的形狀和大小 或由簡單圖形生成復(fù)雜圖形 可以實(shí)現(xiàn)三維形體的二維圖形表示 顯示對三維圖形的不同方位觀察結(jié)果 還可對靜態(tài)圖形經(jīng)過快速變換獲得動態(tài)的顯示效果 第五章圖形變換與觀察 主要教學(xué)內(nèi)容 5 1二維幾何變換5 2三維幾何變換5 3投影變換5 4三維觀察流程5 5裁剪5 6OpenGL中的圖形變換簡介 5 1二維幾何變換 本節(jié)主要教學(xué)內(nèi)容 5 1 1基本幾何變換5 1 2齊次坐標(biāo)5 1 3復(fù)合變換 5 1二維幾何變換 5 1 1基本幾何變換 基本幾何變換都是相對于坐標(biāo)原點(diǎn)和坐標(biāo)軸進(jìn)行的幾何變換 有相對坐標(biāo)原點(diǎn)的平移 旋轉(zhuǎn) 比例變換和相對坐標(biāo)軸的對稱和錯(cuò)切變換 其變換矩陣T可表示為 則 即 5 1二維幾何變換 5 1 1基本幾何變換 1 比例變換比例變換使圖形放大或縮小 比例變換矩陣其中a d分別為x y方向上的比例因子 5 1二維幾何變換 5 1二維幾何變換 5 1 1基本幾何變換 2 旋轉(zhuǎn)變換旋轉(zhuǎn)的基本變換是指圖形沿坐標(biāo)原點(diǎn)旋轉(zhuǎn) 角 其變換矩陣 5 1二維幾何變換 逆時(shí)針旋轉(zhuǎn)時(shí) 角為正 順時(shí)針旋轉(zhuǎn)時(shí) 角為負(fù) 5 1二維幾何變換 5 1 1基本幾何變換 3 平移變換平移變換式中Tx Ty分別為圖形在x y方向上的位移量 平移變換無法用矩陣表示 5 1二維幾何變換 5 1二維幾何變換 5 1 1基本幾何變換 4 對稱變換 5 1二維幾何變換 5 1 1基本幾何變換 4 對稱變換 5 1二維幾何變換 5 1 1基本幾何變換 4 對稱變換 5 1二維幾何變換 5 1 1基本幾何變換 4 對稱變換 5 1二維幾何變換 5 1 1基本幾何變換 4 對稱變換 5 1二維幾何變換 5 1 1基本幾何變換 5 錯(cuò)切變換當(dāng)變換矩陣為時(shí) 變換結(jié)果使圖形產(chǎn)生錯(cuò)切變形 5 1二維幾何變換 當(dāng)b 0時(shí) 此時(shí)圖形的y坐標(biāo)不變 如c 0 圖形沿 x方向作錯(cuò)切位移 如c0 圖形沿 y方向作錯(cuò)切位移 如b 0 圖形沿 y方向作錯(cuò)切位移 5 1二維幾何變換 5 1 2齊次坐標(biāo) 注意到前面的平移變換無法用矩陣表示 這對于復(fù)雜變換的數(shù)學(xué)表示和相應(yīng)變換算法的計(jì)算機(jī)實(shí)現(xiàn)都是不利的 為了解決這個(gè)問題 引入齊次坐標(biāo)表示法 5 1二維幾何變換 5 1 2齊次坐標(biāo) 齊次坐標(biāo)技術(shù)是從幾何學(xué)中發(fā)展起來的 齊次坐標(biāo)的表示在投影幾何中常作為一種證明定理的工具 有時(shí)在n維空間中較難解決的問題 變換到n 1維空間中就比較容易得到問題的解答 所謂齊次坐標(biāo)表示法就是用n 1維向量表示一個(gè)n維向量 5 1二維幾何變換 5 1 2齊次坐標(biāo) 齊次坐標(biāo)的特點(diǎn) 1 h可以取不同的值 所以同一點(diǎn)的齊次坐標(biāo)不是唯一的 2 普通坐標(biāo)與齊次坐標(biāo)的關(guān)系為 一對多 3 當(dāng)h 1時(shí)產(chǎn)生的齊次坐標(biāo)稱為 規(guī)格化坐標(biāo) 因?yàn)榍皀個(gè)坐標(biāo)就是普通坐標(biāo)系下的n維坐標(biāo) n個(gè)坐標(biāo)分量 p1 p2 pn 用n 1個(gè)坐標(biāo)分量 hp1 hp2 hpn h 表示 5 1二維幾何變換 5 1 2齊次坐標(biāo) 齊次坐標(biāo)的作用 1 將各種變換用階數(shù)統(tǒng)一的矩陣來表示 2 便于表示無窮遠(yuǎn)點(diǎn) 3 齊次坐標(biāo)變換矩陣形式把直線變換成直線 平面變換成平面 多邊形變換成多邊形 多面體變換成多面體 圖形拓?fù)潢P(guān)系保持不變 4 變換具有統(tǒng)一表示形式 便于變換合成 便于硬件實(shí)現(xiàn) 5 1二維幾何變換 5 1 2齊次坐標(biāo) 利用齊次坐標(biāo)表示法 二維圖形的變換矩陣形式為通過齊次坐標(biāo)變換矩陣 可以將二維圖形的基本幾何變換重新表示為統(tǒng)一的形式 5 1二維幾何變換 5 1 2齊次坐標(biāo) 1 通過齊次坐標(biāo)變換矩陣 平移變換可表示為 2 旋轉(zhuǎn)變換可表示為 5 1二維幾何變換 5 1 2齊次坐標(biāo) 3 比例變換可表示為 4 對稱變換可表示為 5 1二維幾何變換 5 1 2齊次坐標(biāo) 5 錯(cuò)切變換可表示為 二維圖形的全比例變換可表示為 5 1二維幾何變換 5 1 2齊次坐標(biāo) 由此可見 從變換功能上可以將二維圖形的變換矩陣T分為四個(gè)子矩陣 其中 對圖形進(jìn)行比例 對稱 錯(cuò)切和旋轉(zhuǎn)等變換 gh 對圖形進(jìn)行平移變換 對圖形做投影變換 i 則對圖形做整體比例變換 5 1二維幾何變換 5 1 3復(fù)合變換 實(shí)際上對物體的變換可能需要多種變換的組合 這稱為復(fù)合變換 復(fù)合變換的齊次坐標(biāo)矩陣表示的結(jié)果為每次變換矩陣相乘 1 復(fù)合平移 5 1二維幾何變換 5 1 3復(fù)合變換 2 復(fù)合旋轉(zhuǎn) 5 1二維幾何變換 5 1 3復(fù)合變換 1 平移變換 將變換的參考點(diǎn)移至坐標(biāo)原點(diǎn) 2 針對原點(diǎn)進(jìn)行二維幾何變換 3 進(jìn)行反平移 將參考點(diǎn)移回原來的位置 3 相對任意參考點(diǎn)的幾何變換 前面介紹的比例 旋轉(zhuǎn)變換均需要有一個(gè)參考點(diǎn) 且參考點(diǎn)均為原點(diǎn) 如果要相對任意參考點(diǎn) xf yf 做比例 旋轉(zhuǎn)等變換 其變換過程可分解如下 5 1二維幾何變換 5 1 3復(fù)合變換 3 相對任意參考點(diǎn)的幾何變換 例如 相對 xf yf 的比例變換 其變換矩陣為 5 1二維幾何變換 5 1 3復(fù)合變換 3 相對任意參考點(diǎn)的幾何變換 再如 相對 xf yf 的旋轉(zhuǎn)變換 其變換矩陣為 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換 先對其進(jìn)行分析 方程變換一下 y A B x C B 1 直線在x軸上的截距a為 C A A 0 2 y軸上的截距b為 C B B 0 3 直線與x軸的夾角 k b a A B斜率k tg arctg A B 則變換過程可分為以下五個(gè)步驟 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換 變換可分為以下五步來進(jìn)行 1 沿x軸平移使直線過原點(diǎn) 2 繞原點(diǎn)順時(shí)針旋轉(zhuǎn) 角 使直線與x軸重合 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換 3 關(guān)于x軸作對稱變換 4 繞原點(diǎn)逆時(shí)針旋轉(zhuǎn) 角 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換 5 沿x軸平移使直線回到原位置 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換的復(fù)合變換矩陣為 其中 上述變換步驟并不是唯一的 還有其它不同的變換方法 5 1二維幾何變換 5 1 3復(fù)合變換 4 相對任意直線的對稱變換 注意 由于矩陣乘法不滿足交換律 復(fù)合變換中矩陣相乘的先后順序不能隨意改變 否則可能帶來完全不同的變換結(jié)果 當(dāng)然也有一些例外的情形 例如兩個(gè)平移矩陣之間或兩個(gè)旋轉(zhuǎn)矩陣之間的順序就可以改變 比較 1 放大正方形ABCD而不改變它的中心P 1 5 1 5 放大系數(shù)為2 正方形放大后繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)30度 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 變換操作的順序是 1 平移正方形ABCD 使它的幾何中心P與坐標(biāo)原點(diǎn)重合 2 關(guān)于坐標(biāo)原點(diǎn)的放大 放大系數(shù)為2 3 將放大后的正方形ABCD平移回原來的位置 4 正方形ABCD繞坐標(biāo)原點(diǎn)逆時(shí)針旋轉(zhuǎn)30度 寫出對應(yīng)各步驟的變換矩陣及總的變換矩陣 寫出變換后的正方形坐標(biāo) 2 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 旋轉(zhuǎn)中心P 1 5 1 5 逆時(shí)針旋轉(zhuǎn)正方形30度 然后執(zhí)行相對于坐標(biāo)原點(diǎn)的放大操作 放大系數(shù)為2 變換操作的順序是 1 平移正方形ABCD 使它的幾何中心P與坐標(biāo)原點(diǎn)重合 2 正方形ABCD繞坐標(biāo)原點(diǎn)逆時(shí)針旋轉(zhuǎn)30度 3 將旋轉(zhuǎn)后的正方形ABCD平移回原來的位置 4 關(guān)于坐標(biāo)原點(diǎn)的放大 放大系數(shù)為2 寫出對應(yīng)各步驟的變換矩陣及總的變換矩陣 寫出變換后的正方形坐標(biāo) 比較 1 放大正方形ABCD而不改變它的中心P 1 5 1 5 放大系數(shù)為2 正方形放大后繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)30度 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 變換操作的順序是 1 平移正方形ABCD 使它的幾何中心P與坐標(biāo)原點(diǎn)重合 2 關(guān)于坐標(biāo)原點(diǎn)的放大 放大系數(shù)為2 3 將放大后的正方形ABCD平移回原來的位置 4 正方形ABCD繞坐標(biāo)原點(diǎn)逆時(shí)針旋轉(zhuǎn)30度 寫出對應(yīng)各步驟的變換矩陣及總的變換矩陣 寫出變換后的正方形坐標(biāo) 1 2 3 4 比較 1 放大正方形ABCD而不改變它的中心P 1 5 1 5 放大系數(shù)為2 正方形放大后繞坐標(biāo)原點(diǎn)旋轉(zhuǎn)30度 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 變換操作的矩陣是 比較 2 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 旋轉(zhuǎn)中心P 1 5 1 5 逆時(shí)針旋轉(zhuǎn)正方形30度 然后執(zhí)行相對于坐標(biāo)原點(diǎn)的放大操作 放大系數(shù)為2 變換操作的順序是 1 平移正方形ABCD 使它的幾何中心P與坐標(biāo)原點(diǎn)重合 2 正方形ABCD繞坐標(biāo)原點(diǎn)逆時(shí)針旋轉(zhuǎn)30度 3 將旋轉(zhuǎn)后的正方形ABCD平移回原來的位置 4 關(guān)于坐標(biāo)原點(diǎn)的放大 放大系數(shù)為2 寫出對應(yīng)各步驟的變換矩陣及總的變換矩陣 寫出變換后的正方形坐標(biāo) 1 2 3 4 比較 2 正方形ABCD的初始位置為A 1 1 B 2 1 C 2 2 D 1 2 旋轉(zhuǎn)中心P 1 5 1 5 逆時(shí)針旋轉(zhuǎn)正方形30度 然后執(zhí)行相對于坐標(biāo)原點(diǎn)的放大操作 放大系數(shù)為2 變換操作的矩陣是 比較 比較 四個(gè)點(diǎn)的坐標(biāo)是 1 1 2 1 2 2 1 2 第一種變換 A B C D 1 2 1 2 A B C D 比較 四個(gè)點(diǎn)的坐標(biāo)是 1 1 2 1 2 2 1 2 第二種變換 A B C D 1 2 1 2 A B C D A B C D 習(xí)題 1 試推導(dǎo)出把二維平面上的任一條直線P1 x1 y1 P2 x2 y2 變換成與y坐標(biāo)軸重合的變換矩陣 2 求四邊形A 4 1 B 7 3 C 7 7 D 1 4 繞P 5 4 旋轉(zhuǎn)45度的變換矩陣和端點(diǎn)坐標(biāo) 畫出變換后的圖形 3 已知三角形ABC各頂點(diǎn)坐標(biāo)A 1 2 B 5 2 C 3 5 相對直線y x 1 0做對稱變換 請寫出變換的步驟和每一步變換的矩陣 4 已知三角形各頂點(diǎn)坐標(biāo)為 10 10 10 30 30 15 試對其進(jìn)行二維圖形變換 變換為沿X正方向平移25 沿Y負(fù)方向平移15 再繞原點(diǎn)順時(shí)針旋轉(zhuǎn)90度 寫出變換矩陣 計(jì)算變換后坐標(biāo)值 第五章圖形變換與觀察 主要教學(xué)內(nèi)容 5 1二維幾何變換5 2三維幾何變換5 3投影變換5 4三維觀察流程5 5裁剪5 6OpenGL中的圖形變換簡介 5 2三維幾何變換 本節(jié)主要教學(xué)內(nèi)容 5 2 1基本幾何變換5 2 2復(fù)合變換 5 2三維幾何變換 5 2 1基本幾何變換 三維齊次坐標(biāo)變換矩陣 其形式為 二維坐標(biāo)向量 xy1 二維齊次坐標(biāo)變換矩陣 三維坐標(biāo)向量 xyz1 5 2三維幾何變換 5 2 1基本幾何變換 同二維變換相似 三維基本幾何變換也有平移 旋轉(zhuǎn) 對稱 比例等變換 平移變換 二維 三維 5 2三維幾何變換 5 2 1基本幾何變換 全比例變換 二維 三維 5 2三維幾何變換 5 2 1基本幾何變換 繞坐標(biāo)軸的旋轉(zhuǎn)變換 繞x軸旋轉(zhuǎn) 繞y軸旋轉(zhuǎn) 繞z軸旋轉(zhuǎn) X值不變 y值不變 z值不變 對稱變換 1 關(guān)于坐標(biāo)平面對稱關(guān)于xoy平面進(jìn)行對稱變換的矩陣計(jì)算形式為 5 2 1基本幾何變換 5 2三維幾何變換 X y坐標(biāo)不變 Z坐標(biāo)變反 對稱變換 1 關(guān)于坐標(biāo)平面對稱 5 2 1基本幾何變換 5 2三維幾何變換 y z坐標(biāo)不變 x坐標(biāo)變反 關(guān)于yoz平面的對稱變換的矩陣計(jì)算形式為 對稱變換 1 關(guān)于坐標(biāo)平面對稱 5 2 1基本幾何變換 5 2三維幾何變換 關(guān)于zox平面的對稱變換為 x z坐標(biāo)不變 y坐標(biāo)變反 思考 對任意平面的對稱變換需要用組合變換的方法 關(guān)于x軸對稱的變換矩陣為 關(guān)于y軸的對稱變換為 關(guān)于z軸的對稱變換為 5 2 1基本幾何變換 5 2三維幾何變換 2 關(guān)于坐標(biāo)軸對稱變換 5 2三維幾何變換 5 2 1基本幾何變換 錯(cuò)切變換 5 2三維幾何變換 5 2 1基本幾何變換 5 2三維幾何變換 5 2 1基本幾何變換 三維齊次坐標(biāo)變換矩陣 其形式為 可將變換矩陣分為四個(gè)部分 比例 旋轉(zhuǎn) 對稱 錯(cuò)切 投影 平移 整體比例變換 5 2三維幾何變換 5 2 2復(fù)合變換 例 繞過坐標(biāo)系原點(diǎn)的直線旋轉(zhuǎn) 角 5 2三維幾何變換 1 繞z軸旋轉(zhuǎn) 角2 繞y軸旋轉(zhuǎn) 角3 繞z軸旋轉(zhuǎn) 角 5 2三維幾何變換 4 繞y軸旋轉(zhuǎn) 角5 繞z軸旋轉(zhuǎn) 角 第五章圖形變換與觀察 主要教學(xué)內(nèi)容 5 1二維幾何變換5 2三維幾何變換5 3投影變換5 4三維觀察流程5 5裁剪5 6OpenGL中的圖形變換簡介 5 3投影變換 5 3 1基本概念 三維形體要表示在平面 屏幕或圖紙 上 必須要經(jīng)過投影變換 首先在三維空間中選擇一個(gè)點(diǎn)為投影中心 或稱投影參考點(diǎn) 再定義一個(gè)不經(jīng)過投影中心的投影面 連接投影中心與三維物體的線 稱為投影線 投影線或其延長線將與投影面相交 在投影面上形成物體的像 這個(gè)像稱為三維物體在二維投影面上的投影 投影中心相當(dāng)于人的視點(diǎn) 投影線則相當(dāng)于視線 5 3投影變換 根據(jù)投影中心與投影平面之間的距離不同 投影可以分為平行投影和透視投影 平面幾何投影可分為兩大類 透視投影的投影中心到投影面之間的距離是有限的平行投影的投影中心到投影面之間的距離是無限的 5 3投影變換 5 3投影變換 平行投影可分成兩類 正投影和斜投影 5 3投影變換 5 3 2平行投影 5 3投影變換 5 3 2平行投影 1 正平行投影投影方向垂直于投影平面時(shí)稱為正平行投影 工程制圖中通常所說的三視圖都屬于正平行投影 V W H 5 3投影變換 1 正投影 三視圖 在V W H面得到三視圖為正投影 但為了將三個(gè)視圖在同一平面 o x y 上畫出 通常認(rèn)為平面 o x y 與xoz平面共面 主視圖 V面 還需作適當(dāng)平移 而側(cè)視圖 W面 則還要先繞Z軸逆時(shí)針旋轉(zhuǎn)90度角 再進(jìn)行平移 俯視圖 H面 則先繞X軸順時(shí)針旋轉(zhuǎn)90度角 然后進(jìn)行平移 V W H 主視圖 主視圖是將立體向V面投影得到的 投影結(jié)果為 x x y 0 z z為將點(diǎn) xyz 變換為 x y z 只需將點(diǎn) xyz 作如下變換即可 5 3投影變換 將該投影向左角移動dx tx dy tz 將x軸反向與x 軸保持一致 將坐標(biāo)原點(diǎn)平移到點(diǎn)O 5 3投影變換 俯視圖1 將立體向H面作正投影 此時(shí)Z坐標(biāo)取0 5 3投影變換 2 使水平投影面繞X軸旋轉(zhuǎn) 90 使與正投影面處于同一平面 3 最后讓圖形沿x Z軸平移dx tx dz ty 4 將x軸反向以與x 兩坐標(biāo)軸方向一致 5 將坐標(biāo)原點(diǎn)平移至點(diǎn)O 5 3投影變換 側(cè)視圖先將立體向W面作正投影 X坐標(biāo)取為0 5 3投影變換 2 使水平投影面繞Z軸旋轉(zhuǎn)90 使與正投影面處于同一平面 3 最后讓圖形沿x軸 Z軸平移dx ty dz tz 4 將坐標(biāo)原點(diǎn)平移至點(diǎn)O 5 3投影變換 5 3投影變換 主視圖變換矩陣為 俯視圖變換矩陣為 側(cè)視圖變換矩陣為 5 3投影變換 2 正軸測投影軸測投影是單面投影圖 它采用平行投影 根據(jù)投影方向與投影面夾角的不同分為正軸測投影和斜軸測投影 軸測投影有較強(qiáng)的立體感 在畫法上也比透視圖簡單 常用來繪制機(jī)器 部件 機(jī)箱等外觀圖 為了在圖上同時(shí)表示形體的三個(gè)向度 以獲得立體感 應(yīng)避免使形體的各平面與投影方向平行 5 3投影變換 2 正軸測投影在軸測投影中 沿三個(gè)坐標(biāo)軸向直線的投影長度與實(shí)際長度之比稱為軸向變形系數(shù)或軸向變化率 分別用p q r表示 在正投影的情況下 0 p q r 1 對于正軸測投影 0 p q r 1 斜投影的系數(shù)可以小于1 等于1 大于1 當(dāng)p q r時(shí) 得到的正軸測投影圖稱為正三測 當(dāng)p q r或p q r或p r q時(shí) 得到正二測當(dāng)q p r時(shí) 得到正等測 5 3投影變換 2 斜平行投影 投影方向不垂直于投影平面的平行投影 稱為斜平行投影 在斜平行投影中 投影平面如果取坐標(biāo)平面 斜平行投影此時(shí)就是斜軸測投影 Oxy平面的斜軸測投影可看做是形體經(jīng)過沿x方向關(guān)于z的錯(cuò)切變換 沿y方向關(guān)于z的錯(cuò)切變換后 再做正投影得到的 5 3投影變換 5 3 3透視投影 透視投影采用中心投影法 它與人觀察景物的情況十分相似 能給人以較好的立體感和深度感 透視投影按照主滅點(diǎn)的個(gè)數(shù)分為一點(diǎn)透視 二點(diǎn)透視和三點(diǎn)透視 滅點(diǎn) 任何一束不平行于投影平面的平行線的透視投影匯聚到一點(diǎn) 稱為滅點(diǎn) 主滅點(diǎn) 如果滅點(diǎn)落在坐標(biāo)軸上 稱為主滅點(diǎn) 主滅點(diǎn)的數(shù)量與投影平面切割坐標(biāo)軸的數(shù)量相對應(yīng) 5 3投影變換 5 3 3透視投影 立方體的三類透視 一 簡單的一點(diǎn)透視投影變換 P0 視點(diǎn)S平面 投影面 屏幕畫面點(diǎn)Qw的透視 P0Qw與平面S的交點(diǎn) 當(dāng)投影面與某軸垂直時(shí)為一點(diǎn)透視 當(dāng)投影面平行于某坐標(biāo)軸 但與另外兩軸不垂直時(shí)為二點(diǎn)透視 否則為三點(diǎn)透視 Qw Xw Yw Zw Qs Xs Ys 5 3投影變換 1 簡單的一點(diǎn)透視 如圖a所示 設(shè)視點(diǎn)E 0 0 ze 在z軸上 投影面為xoy坐標(biāo)平面 空間點(diǎn)p xp yp zp 則可得到視線EP的參數(shù)方程為 投影到xoy面上 所以z 0 可以得到t 所以齊次坐標(biāo)表示的矩陣形式為 5 3投影變換 5 3 3透視投影 5 3投影變換 2 觀察坐標(biāo)系下的一點(diǎn)透視 在實(shí)際應(yīng)用中 為了方便視點(diǎn)的選擇 通常需要在觀察坐標(biāo)系下進(jìn)行透視投影 與形體所在的世界坐標(biāo)系為右手系不同 觀察坐標(biāo)系為左手系 并且視點(diǎn)在觀察坐標(biāo)系的原點(diǎn) 如圖b所示 5 3投影變換 5 3 3透視投影 5 3投影變換 在觀察坐標(biāo)系下的一點(diǎn)透視 可以分為下面幾步來完成 將視點(diǎn)移到 0 0 ze 處 然后將z軸反向 再作視點(diǎn)在z軸上的一點(diǎn)透視變換 然后將z軸方向變回去 將視點(diǎn)還原至原點(diǎn) 變換矩陣為 習(xí)題 求經(jīng)過透視投影變換后點(diǎn)P 1 2 3 的坐標(biāo) 已知 觀察平面為z 4 投影中心為R 0 0 5 第五章圖形變換與觀察 主要教學(xué)內(nèi)容 5 1二維幾何變換5 2三維幾何變換5 3投影變換5 4三維觀察流程5 5裁剪5 6OpenGL中的圖形變換簡介 5 4三維觀察流程 本節(jié)主要教學(xué)內(nèi)容 5 4 1坐標(biāo)系統(tǒng)5 4 2建模變換5 4 3觀察變換5 4 4投影變換5 4 5窗口 視區(qū)變換 5 4三維觀察流程 5 4三維觀察流程 5 4 1坐標(biāo)系統(tǒng)建模坐標(biāo)系MC ModelingCoordinateSystem 右手三維直角坐標(biāo)系 局部坐標(biāo)系 2 世界坐標(biāo)系WC WorldCoordinateSystem 右手三維直角坐標(biāo)系 全局坐標(biāo)系 也稱用戶坐標(biāo)系 5 4三維觀察流程 5 4 1坐標(biāo)系統(tǒng)3 觀察坐標(biāo)系VC ViewingCoordinateSystem 左手三維直角坐標(biāo)系 也稱視點(diǎn) 攝像機(jī) 坐標(biāo)系4 投影坐標(biāo)系PC ProjectionCoordinateSystem 左手三維直角坐標(biāo)系5 設(shè)備坐標(biāo)系DC DeviceCoordinateSystem 左手三維直角坐標(biāo)系 像素坐標(biāo)系或位圖坐標(biāo)系 5 4三維觀察流程 5 4三維觀察流程 5 4 2建模變換 指將在建模坐標(biāo)系中 局部坐標(biāo)系 建模的物體放到統(tǒng)一的世界坐標(biāo)系 全局坐標(biāo)系 的過程中 需要根據(jù)場景的需要所進(jìn)行的組合變換 通常可通過平移 旋轉(zhuǎn) 伸縮等簡單變換的組合來實(shí)現(xiàn) 如圖所示 5 4三維觀察流程 5 4 3觀察變換 指從世界坐標(biāo)空間到觀察坐標(biāo)空間的變換 也稱視點(diǎn)變換 在觀察坐標(biāo)空間中的某些操作更方便 通常觀察坐標(biāo)系的原點(diǎn)模擬視點(diǎn)或攝像機(jī)的位置 z軸與觀察方向共線 它可被放在世界坐標(biāo)系中的任意位置并指向任意方向 還可隨意旋轉(zhuǎn) 這樣可以很好地模擬人眼或攝像機(jī)的觀察 觀察變換通??捎勺鴺?biāo)變換 平移變換和旋轉(zhuǎn)變換加以組合來實(shí)現(xiàn) 5 4三維觀察流程 5 4 4投影變換 5 4三維觀察流程 5 4 5窗口 視區(qū)變換 窗口在通常意義上指圖形學(xué)中構(gòu)建的場景范圍 一般將用戶在用戶坐標(biāo)系 可能是WC VC或NPC 中定義的任一區(qū)域稱為窗口 視圖區(qū)則通常指計(jì)算機(jī)屏幕上的某個(gè)區(qū)域 一般定義為矩形 其坐標(biāo)一般定義在設(shè)備坐標(biāo)系DC下 5 4三維觀察流程 5 4 5窗口 視區(qū)變換 窗口 視區(qū)變換通常解決下面幾個(gè)方面的問題 1 窗口邏輯坐標(biāo)與視區(qū)設(shè)備坐標(biāo)之間的轉(zhuǎn)換 2 用戶坐標(biāo)系到屏幕坐標(biāo)系 坐標(biāo)軸方向可能改變 還要處理坐標(biāo)原點(diǎn)的映射問題 3 用戶坐標(biāo)系中窗口區(qū)的圖形坐標(biāo)轉(zhuǎn)換到視圖區(qū)上的坐標(biāo)需要取整 4 如果視圖區(qū)水平分辨率和垂直分辨率不同 為了保持圖形不變形 還要進(jìn)行比例變換 第五章圖形變換與觀察 主要教學(xué)內(nèi)容 5 1二維幾何變換5 2三維幾何變換5 3投影變換5 4三維觀察流程5 5裁剪5 6OpenGL中的圖形變換簡介 5 1裁剪 本節(jié)主要教學(xué)內(nèi)容 5 5 1點(diǎn)的裁剪5 5 2直線裁剪5 5 3多邊形裁剪5 5 4其它裁剪 5 5裁剪 裁剪作用 選擇顯示的內(nèi)容 圖形在窗口內(nèi)的部分被顯示出來 窗口外的部分被裁剪掉 圖形中每個(gè)基本元素都要經(jīng)過裁剪 因此裁剪直接影響整個(gè)圖形系統(tǒng)的效率 裁剪 5 5裁剪 裁剪類型 二維裁剪 三維裁剪裁剪窗口 矩形 凸多邊形 任意多邊形視見體 棱臺 立方體裁剪對象 直線段 多邊形 文字等裁剪方法 直線的裁剪方法 Cohen Sutherland算法 Cyrus Beck算法 梁友棟 Barsky算法 Liang 84算法 多邊形的裁剪方法 Sutherland Hodgman算法三維的裁剪方法 Cohen Sutherland算法 梁友棟 Barsky算法 5 5裁剪 5 5 1點(diǎn)的裁剪對點(diǎn)的裁剪可理解為對點(diǎn)在窗口內(nèi)的包含檢測 1 裁剪窗口為矩形設(shè)矩形窗口的左下角坐標(biāo)為 Xl Yb 右上角坐標(biāo)為 Xr Yt 則只要判斷下面兩個(gè)不等式 Xl x XrYb y Yt如果兩個(gè)不等式都成立 則點(diǎn)在矩形窗口內(nèi) 否則在窗口外 5 5裁剪 5 5 1點(diǎn)的裁剪2 裁剪窗口為不規(guī)則多邊形當(dāng)裁剪窗口區(qū)域?yàn)椴灰?guī)則多邊形時(shí) 算法的關(guān)鍵就是判斷點(diǎn)是否在多邊形內(nèi) 目前常用的方法有 射線法 累計(jì)角度法 叉積符號法 5 5裁剪 5 5 2直線裁剪1 Cohen Sutherland編碼裁剪算法Cohen Sutherland算法是一個(gè)經(jīng)典的編碼算法 自1968年以來被公認(rèn)為是一個(gè)好的算法 奠定了設(shè)計(jì)線段裁剪算法的理論基礎(chǔ) 為最早流行的直線裁剪算法 5 5裁剪 5 5 2直線裁剪Cohen Sutherland算法的主要思想是 對于每條線段分為三種情況處理 1 若線段完全在窗口之內(nèi) 則顯示該線段 稱為 取 2 若線段明顯在窗口之外 則丟棄該線段 稱為 棄 3 若線段既不滿足 取 的條件 也不滿足 棄 的條件 則把線段分割為兩段 其中一段完全在窗口之外 可棄之 對另一段則重復(fù)上述處理 5 5 2Cohen Sutherland算法 Cohen Sutherland算法分成兩部分 2維窗口 2 完全在窗口外的線段 稱為完全不可見線段 棄 這時(shí)需要計(jì)算出直線段和窗口邊界的一個(gè)交點(diǎn) 這個(gè)交點(diǎn)把直線分成兩段 其中一條為完全不可見的線段 被拋棄 第二步處理不能斷定為完全可見或完全不可見的線段 完全在窗口內(nèi)的直線段 稱為完全可見的線段 取 第一步是判定 對余下部分再作第一步的判斷 重復(fù)上述過程 直到直線段余下的部分可用第一步的判斷得出肯定的結(jié)論為止 算法的第一步 在x xL左側(cè)的區(qū)域 編碼的第四位是1 值為1 窗口的四條邊把整個(gè)平面分成九個(gè)區(qū)域 每一個(gè)區(qū)域采用四位編碼表示 在x xR右側(cè)的區(qū)域 編碼的第三位是1 值為2 在y yB下側(cè)的區(qū)域 編碼的第二位是1 值為4 在y yT上側(cè)的區(qū)域 編碼的第一位是1 值為8 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 8 5 5裁剪 裁剪一條線段時(shí) 先求出兩端點(diǎn)所在的區(qū)號code1和code2 若code1 0且code2 0 則說明線段的兩個(gè)端點(diǎn)均在窗口內(nèi) 那么整條線段必在窗口內(nèi) 應(yīng)取之 如圖中的線段L3 若code1和code2經(jīng)按位與運(yùn)算的結(jié)果不為0 則說明兩個(gè)端點(diǎn)同在窗口的上方 下方 左方或右方 如圖中的線段L1 其兩端點(diǎn)的編碼與運(yùn)算的結(jié)果code1 1001 code2 1000 1000 左起第一位不為0說明兩端點(diǎn)均在窗口上方 L1肯定在窗口之外 這種情況下 對線段的處理是棄之 算法的第二步 線段KL為例 從K點(diǎn) 1001 的編碼分析出K在x xL的左側(cè) KL必和x xL有交點(diǎn) 圖示 如果上述兩種條件都不成立 則按第三種情況處理 求出線段與窗口某邊的交點(diǎn) 在交點(diǎn)處把線段一分為二 其中必有一段完全在窗口外 可棄之 對另一段則重復(fù)上述處理 求出其交點(diǎn)M KM顯然是完全不可見的 因而只要對ML從第一步開始重復(fù)上述處理步驟 由于ML還是不能用第一步下結(jié)論 又從M的編碼發(fā)現(xiàn)M在y yT的上側(cè) 因而要求ML和y yT的交點(diǎn)N 丟掉MN 對NL用第一步的方法可斷定NL為完全可見 至此裁剪結(jié)束 5 5裁剪 Cohen Sutherland編碼裁剪算法的C程序如下 defineLEFT1 defineRIGHT2 defineBOTTOM4 defineTOP8voidencode floatx floaty floatXL floatXR floatYB floatYT int code intc 0 if xXR c c RIGHT if yYT c c TOP code c return 5 5裁剪 voidC S LineClip float x1 float y1 float x2 float y2 floatXL floatXR floatYB floatYT intcode1 code2 code floatx y encode x1 y1 XL XR YB YT 交點(diǎn) 5 5裁剪 elseif RIGHT 5 5裁剪 if code code1 x1 x y1 y encode x y XL XR YB YT 程序代碼 floatx1 xr yt yb unsignedcharcode floatx floaty unsignedcharc 0 if xxr c c 2 if yyt c c 8 returnc voidclip floatx0 floaty0 floatx2 floaty2 unsignedcharc1 c2 c floatx y wx wy c1 code x0 y0 c2 code x2 y2 while c1 0 c2 0 if c1 elseif c 練習(xí) 采用Cohen Sutherland編碼法進(jìn)行線段二維裁剪時(shí) 如何判斷完全可見線段和在窗口一側(cè)的完全不可見線段 設(shè)R是左下角為L 3 1 右上角為R 2 6 的矩形窗口 請先給出矩形分割平面的區(qū)域編碼 然后寫出下面線段端點(diǎn)的區(qū)位編碼 A 4 2 B 1 7 C 1 5 D 3 8 E 2 3 F 1 2 G 1 2 H 3 3 I 4 7 J 2 0 補(bǔ)充 中點(diǎn)分割算法 設(shè)要裁剪的線段是P0P1 我們需要從P0出發(fā)找出離P0最近的可見點(diǎn) A點(diǎn) 和從P1點(diǎn)出發(fā)找出離P1最近的可見點(diǎn) B點(diǎn) 從P0出發(fā)找最近可見點(diǎn)A 先求P0P1的中點(diǎn)Pm 若P0Pm不能定為顯然不可見 則取P0Pm代替P0P1 否則取PmP1代替P0P1 再對新的P0P1求中點(diǎn)Pm 重復(fù)上述過程 直到P0Pm長度小于給定的數(shù) 為止 在顯示時(shí) 可取成一個(gè)象素的寬度 對分辨率為2N 2N的顯示器來說 上面講的二分的過程最多只要作N次 算法流程 Liang Barsky LIANG84 算法的裁剪窗口是矩形窗口 且矩形的邊平行于坐標(biāo)軸 2 梁友棟 Barsky參數(shù)化裁剪算法 D C P2 P1 B A P4 P3 設(shè)要裁剪的線段是P1P2 P1 x1 y1 P2 x2 y2 P1P2與窗口的邊界交于ABCD四點(diǎn) 如圖所示 圖5 25a 算法示意圖 算法的基本思想是 從A B P1中找出最靠近P2的點(diǎn) 圖中找到的是P1 2 梁友棟 Barsky參數(shù)化裁剪算法 那么P1C就是P1P2線段上的可見部分 從C D P2中找出最靠近P1的點(diǎn) 顯然是C點(diǎn) 具體計(jì)算交點(diǎn)時(shí) 將P1P2寫成如下的參數(shù)方程 2 梁友棟 Barsky參數(shù)化裁剪算法 當(dāng)dx dy 0時(shí) 稱x XL y YB 為始邊 x XR y YT 為終邊 其中dx x2 x1 dy y2 y1 根據(jù)dx dy 把窗口分成兩類 一類稱為始邊 一類稱為終邊 P2 P1 P4 P3 當(dāng)dx dy 0時(shí) 稱x XR y YT 為始邊 x XL y YB 為終邊 取t1 max t1 t1 0 則t1就是圖中A B和P1三點(diǎn)中最靠近P2點(diǎn)的參數(shù) P1 2 梁友棟 Barsky參數(shù)化裁剪算法 當(dāng)t2 t1時(shí) 則前面方程中參數(shù)t取值為t t1 t2 的線段就是P1P2的可見部分 再求出P1P2與兩條終邊交點(diǎn)的參數(shù)t2 t2 取t2 min t2 t2 1 則t2就是圖中C D和P2三點(diǎn)中最靠近P1點(diǎn)的參數(shù) C 當(dāng)t1 t2時(shí) 整條線段不可見 如圖中的P3P4 A B 求出P1P2與兩條始邊交點(diǎn)的參數(shù)t1 t1 C D 為了確定始邊和終邊及求出P1P2與它們的交點(diǎn) 令 2 梁友棟 Barsky參數(shù)化裁剪算法 當(dāng)直線平行于裁剪邊界之一時(shí) 相應(yīng)的lk 0 其中k 1 2 3 4 對應(yīng)于左 右 下 上裁剪邊界 當(dāng)lk 0時(shí) 易知交點(diǎn)的參數(shù)為 當(dāng)lk0時(shí) 求得的tk必是P1P2與終邊交點(diǎn)的參數(shù) 2 梁友棟 Barsky參數(shù)化裁剪算法 當(dāng)lk 0時(shí) 若mk 0 則P1P2是完全不可見的 應(yīng)舍棄 如圖5 25b中的P3P4 P2 P1 P6 P5 P4 P3 圖5 25b lk 0的情況 當(dāng)lk 0時(shí) 而相應(yīng)的mk 0 則P1P2是平行于裁剪邊界并且在窗口內(nèi) 如圖5 25b中的P5P6 這時(shí)因平行于XL及XR 故與它們沒有交點(diǎn) 而與YB及YT的交點(diǎn)決定可見部分 算法的程序 intclipTest floatp floatq float u1 float u2 p即公式中的lk q為公式中的mkfloatr intretVal 1 retVal 1表示可見 0表示不可見if p u2 retVal 0 u2為終邊的交點(diǎn)elseif r u1 u2 r u1為始邊的交點(diǎn) elseif q 0 retVal 0 returnretVal 算法 intL B LineClip floatif clipTest dy y1 YB u1 u2 if clipTest dy YT y1 u1 u2 if u20 x1 u1 dx y1 u1 dy return1 return0 裁剪 以上兩種直線裁剪算法都是針對裁剪窗口為矩形窗口而言的 如果裁剪窗口的形狀更為復(fù)雜 就需要使用相應(yīng)的其他裁剪算法 比如對凸多邊形窗口適用的Cyrus Beck算法 Liang Barsky裁剪算法就是在Cyrus Beck算法基礎(chǔ)上的簡化和優(yōu)化得來的 裁剪 對兩種算法比較 Cohen Sutherland與中點(diǎn)法在區(qū)域碼測試階段能以位運(yùn)算方式高效率地進(jìn)行 因而當(dāng)大多數(shù)線段能夠簡單的取舍時(shí) 效率較好 梁友棟 Barskey算法只能應(yīng)用于矩形窗口的情形 但其效率比前兩者要高 這是因?yàn)檫\(yùn)算只涉及到參數(shù) 僅到必要時(shí)才進(jìn)行坐標(biāo)計(jì)算 5 5裁剪 5 5 3多邊形裁剪 多邊形的裁剪不能簡單的用直線裁剪算法對多邊形各邊進(jìn)行裁剪來實(shí)現(xiàn) 因?yàn)橛?jì)算機(jī)圖形學(xué)中的多邊形通常被認(rèn)為是封閉的 它把平面分成多邊形內(nèi)和外 便于進(jìn)行填充 如果把多邊形分解為邊界的線段逐段裁剪 則只能得到一些離散的線段并可能導(dǎo)致本來封閉的多邊形變得不封閉了 多邊形裁剪示例 多邊形是由一組線段圍成的封閉區(qū)域 線段裁剪是多邊形裁剪的基礎(chǔ) 圖 b 是多邊形的線段被裁剪后的結(jié)果 但已不再是封閉的區(qū)域 正確的剪裁結(jié)果應(yīng)是一個(gè)有邊界的區(qū)域 即裁剪后的結(jié)果仍是一個(gè) 或多個(gè) 多邊形 這就要求在裁剪過程中應(yīng)當(dāng)保留多邊形的區(qū)域性質(zhì) a 裁剪前 c 對多邊形區(qū)域做裁剪 b 僅對多邊形的線段做裁剪 多邊形裁剪 多邊形裁剪 5 5裁剪 5 5 3多邊形裁剪 多邊形的裁剪算法主要要解決兩種情況 1 一個(gè)封閉的多邊形被裁剪后通常變得不再封閉 需要確定用窗口邊界的適當(dāng)部分來封閉它 2 一個(gè)凹多邊形被裁剪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司數(shù)字化活動方案
- 公司羽毛球團(tuán)建活動方案
- 公司秋季出游活動方案
- 公司粽子節(jié)活動方案
- 公司新人見面會策劃方案
- 公司畢業(yè)晚會活動方案
- 公司聚會團(tuán)建策劃方案
- 公司比學(xué)趕幫超活動方案
- 公司端午慰問活動方案
- 公司消除浪費(fèi)活動方案
- 體外診斷試劑盒線性范圍研究線性區(qū)間評價(jià)資料及可報(bào)告區(qū)間建立
- AQ 1097-2014 井工煤礦安全設(shè)施設(shè)計(jì)編制導(dǎo)則(正式版)
- 甲乙方施工合同范本
- 嬰幼兒配方乳粉市場銷售管理規(guī)范
- 小班語言《誰的救生圈》課件
- 海思芯片PC-測試技術(shù)規(guī)范
- 內(nèi)陸?zhàn)B殖與水生植物種植
- 集體協(xié)商培訓(xùn)課件
- Unit 3 What would you like A Let's learn(教學(xué)設(shè)計(jì))人教PEP版英語五年級上冊
- 物業(yè)社區(qū)團(tuán)購方案
- 仙家送錢表文-文字打印版
評論
0/150
提交評論