五、多邊形裁剪
多邊形裁剪算法的輸出應該是裁剪后的多邊形邊界的【定點序列】!
5.1Sutherland—Hodgeman多邊形裁剪——>【分而治之】
基本思想:
將多邊形邊界作為一個整體,每次用窗口的一條邊對要裁剪的多邊形和中間結果多邊形進行裁剪。
把平面分為兩個區域:包含有窗口區域的一個域稱為可見側;不包含窗口區域的域為不可見側。
裁剪得到的結果多邊形的頂點有兩部分組成:
(1)落在可見一側的原多邊形頂點;
(2)多邊形的邊與裁剪窗口邊界的交點。
根據多邊形每一邊與窗口所形成的位置關系,沿着多邊形依次處理頂點會遇到四種情況:
(1)第一點S在不可見側面,第二點P在可見側面,則交點I與點P均被加入到輸出頂點表中;
(2)第一點S和第二點P都在可見側,則點P被加入到輸出頂點表中;
(3)第一點S在可見側,而第二點P在不可見側,則交點I被加入到輸出頂點表中;
(4)第一點S和第二點P都在不可見側,則輸出頂點表中不增加任何頂點
【不足之處】
Sutherland—Hodgeman算法對凸多邊形進行裁剪可以獲得正確的裁剪結果,但是對凹多邊形進行裁剪的結果可能存在問題。
六、文字裁剪
文字裁剪包括:串精度裁剪/字符精度裁剪/筆畫/象素精度裁剪
6.1串精度裁剪
當字符串中的【所有】字符都在裁剪窗口內時,就全部保留它,否則舍棄整個字符串。
6.2字符精度裁剪
在進行裁剪時,任何與窗口有【重疊或落在窗口邊界以外】的字符都被裁剪掉
6.3筆畫/象素精度裁剪
將筆划分解成直線段對窗口坐裁剪,需要判斷字符串中各字符的哪些象素、筆畫的【哪一部分】在窗口內,保留窗口內部分,裁剪掉窗口外的部分。