Cohen-Sutherland算法
本算法又稱為編碼裁剪算法,算法的基本思想是對每 條直線段分三種情況處理:
(1)若點p1和p 2完全在裁剪窗口內
“簡取”之
(2)若點p1(x1,y1)和p2(x2,y2)均在窗口外,且滿足下 列四個條件之一:
對這四種類型的直線,“簡棄”之
(3)如果直線段既不滿足“簡取”的條件,也不滿足 “簡棄”的條件?
需要對直線段按交點進 行分段,分段后判斷直 線是“簡取”還是“簡 棄”。
每條線段的端點都賦以四 位二進制碼D3D2D1D0,編 碼規則如下:
窗口及其延長線所構 成了9個區域。根據該 編碼規則:
裁剪一條線段時,先 求出端點p1和p 2的編 碼code1和code 2
然后進行二進制“ 或 ” 運算和“ 與”運算
(1)若code1|code2=0 ,對直線段應簡取之
(2)若code1&code2≠0,對直線段可簡棄之
若上述兩條件均不成立
則需求出直線段與窗口邊界的交點在交 點處把線段一分為二
小結
Cohen-Sutherland算法用編碼的方法實現了對直線段的裁剪
編碼的思想在圖形學中甚至在計算機科學里也是非常重要的 ,一個很簡單的思想可以帶來很了不起的作用。
比較適合兩種情況:一是大部分線段完全可見;二是大部分 線段完全不可見。