[ 計算機圖形學 ] 復習Cohen-Sutherland 直線段裁剪算法


關於Cohen-Sutherland 直線段裁剪算法思想概述

直線段裁剪是二維圖形裁剪的基礎,本質是判斷直線段是否與窗口邊界相交,如相交則進一步確定直線段上位於窗口內的部分。

算法思想:直線的端點賦予一組4位二進制碼,稱為RC(區域編碼),裁剪窗口的四條邊所在的直線可以把平面分為9個區域,對各個區域的編碼也是四位,C3C2C1C0,分別代表上下右左四個窗口邊界。裁剪窗口所在的區域為0000,對於直線段上的端點進行編碼,等於該端點所在的區域的編碼。

編碼后就容易判斷兩個端點的情況:

比如兩個端點求與不等於0,即RC0&RC1≠0;說明該線段在裁剪窗口之外,應簡棄

兩個端點RC編碼按位或為0,即RC0|RC1=0。說明直線段兩個端點都在窗口內,應簡取

還有第三種情況:不滿足前兩種情況的,說明直線段與邊界或其延長線有交點,要進行求交判斷:
①此時直線段與邊界相交,P0P1和兩個邊界相交,按左右下上的順序計算交點,設交點為P,注意:總是要讓直線段的一個頂點處於窗口之外,例如P0點。這樣P0點到交點P的直線段必然不可見,故可以將交點外的線段簡棄。

②直線段與邊界的延長線相交,直線段在窗口外,也不在窗口同一側。依舊按照左右下上順序計算,將延長線與線段交點定為P,有PP0,位於窗口某側,被簡棄。

如果求裁剪后窗口內直線段的端點坐標,(那一般是求P1,以實際題目為准,看剪了哪部分),兩點求直線方程,然后帶入相交邊界的x或y值可得。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM