9.1 เรขาคณิต 2 มิติ(Two Dimentional Clipping)
9.1.1
Line Clipping
Algorithm
สำหรับ Line Clipping มีอยู่หลาย Algorithm
แต่ในที่นี้จะพิจารณา Algorithm ของ Cohen
& Sutherland
สำหรับวิธีการของ Cohen & Sutherland นี้ จะแบ่งระบบพิกัดออกเป็นพื้นที่
9 ส่วน โดยมีพื้นที่ตรงกลางเป็นช่อง Window และพื้นที่อีก 8
ส่วนคือพื้นที่รอบ ๆ Window ดังรูป
แต่ละส่วนจะมีรหัสแทนเป็นเลขฐาน 2 จำนวน 4 bits จุดพิกัดซึ่งตกอยู่ในพื้นที่ใดก็จะถูกกำหนดให้มีรหัสตามพื้นที่นั้น
รหัสทั้ง 9 มีความหมายดังนี้
รหัส 1001 หมายถึง จุดที่อยู่ในตำแหน่งทาง บน ซ้าย ของ Window
รหัส 1000 หมายถึง จุดที่อยู่ในตำแหน่งทาง บน ของ Window
รหัส 1010 หมายถึง จุดที่อยู่ในตำแหน่งทาง บน ขวา ของ Window
รหัส 0001 หมายถึง จุดที่อยู่ในตำแหน่งทาง ซ้าย ของ Window
รหัส 0000 หมายถึง จุดที่อยู่ในตำแหน่งภายใน Window
รหัส 0010 หมายถึง จุดที่อยู่ในตำแหน่งทาง ขวา ของ Window
รหัส 0101 หมายถึง จุดที่อยู่ในตำแหน่งทาง ล่าง ซ้าย ของ Window
รหัส 0100 หมายถึง จุดที่อยู่ในตำแหน่งทาง ล่าง ของ Window
รหัส 0110 หมายถึง จุดที่อยู่ในตำแหน่งทาง ล่าง ขวา ของ Window
การอ้างถึง bit แต่ละbit ในรหัสจะเป็นดังนี้
หลักหน่วยของรหัสจะเป็น bit 1 หลักต่อมาก็เป็น bit 2
, bit 3 , bit 4 ซึ่งแต่ละ
bit สัมพันธ์กับตำแหน่งซึ่งเปรียบเทียบกับ Window ดังนี้
Bit
1 ซ้าย
Bit
2 ขวา
Bit
3 ล่าง
Bit
4 บน
ค่าของแต่ละ bit ในรหัสอาจจะเป็น 0 หรือ 1 ก็ได้
ขึ้นอยู่กับผลของการเปรียบเทียบค่าพิกัดปลายของเส้น กับขอบเขตของ Window ดังนี้
· Bit 1 มีค่า 1 : X XWL < 0 ; มีค่า 0 : X
XWL > = 0
· Bit 2 มีค่า 1 : X XWH > 0 ; มีค่า 0 : X
XWH < = 0
· Bit 3 มีค่า 1 : Y YWL < 0 ; มีค่า 0 : Y
YWL > = 0
· Bit 4 มีค่า 1 : Y YWH > 0 ; มีค่า 0 : Y
YWH < = 0
เมื่อกำหนดรหัสให้กับจุดพิกัดปลายของทุกเส้น
เราสามารถตรวจสอบได้ว่าเส้นใดบ้างที่อยู่ภายในช่องหน้าต่างทั้งเส้นหรือภายนอกหน้าต่างทั้งเส้น
โดยการนำรหัสของจุดพิกัดปลายทั้งคู่มาทำการ AND กันถ้าผลที่ได้ไม่เป็น 0000
ก็สรุปได้ทันทีว่าเส้น ๆนั้นอยู่ภายนอก Window เช่น เส้นตรง P2
จากรูปมีรหัสที่พิกัดจุดปลาย C เป็น 0101
และมีรหัสที่พิกัดจุดปลาย D เป็น 1001 เมื่อนำมา AND กันแล้วปรากฏว่าผลที่ได้ไม่เป็น 0000 ดังนั้นเส้นตรง P2 จึงไม่อยู่ใน Window
ในกรณีของเส้นตรง P1 เราหารหัสของจุดปลายทั้งสองได้เป็น 1000 (จุดB) และ
0100 (จุด A) เมื่อนำมา AND กันผลที่ได้
เป็น 0000 ซึ่งแสดงว่าเส้นนี้อยู่ใน Window ทั้งเส้นแต่ในความเป็นจริงแล้วเส้นตรงนี้มีเพียงบางส่วนที่อยู่ใน
Window เหตุการณ์เช่นนี้เราต้องหาจุดตัดของเส้นกับขอบของ Window
จะได้ A และ B จากนั้นนำรหัสของจุดทั้งสองมาทำการ
AND กัน
ผลที่ได้ เป็น 0000 ก็แสดงว่า เส้นตรง
P1 ในส่วนจาก A ถึง B อยู่ใน Window
9.1.2
Area Clipping
จากรูปถ้าเป็นการ Clip ธรรมดาจะได้เป็น
แต่ถ้าเป็น Area clipping จะเป็น
เราสามารถใช้ Cohen & Sutherland line clipping มาประยุกต์ใช้กับ
Area clipping ได้ เช่น เส้นตรง P เราสามารถหาส่วนของเส้นตรงที่อยู่ใน
Window ได้คือ
A&&A และ B&&B เป็นต้น ดังนั้นเส้นตรงอื่น ๆ ที่คาบเกี่ยวอยู่ในและนอก Window ก็สามารถทำได้เช่นเดียวกับเส้นตรง P
9.1.3
Text Clipping
แบ่งออกเป็น 3 แบบ
คือ
1.
ตีความ Text เป็น pixel
2.
ตีความ Text เป็น Character
3.
ตีความ Text เป็นข้อความหรือประโยค
9.1.4
Blanking
เป็นการทำงานที่ตรงกันข้ามกับ
Window นั่นคือ เมื่อเรานำ Window ไปครอบส่วนใดของภาพ
ส่วนที่ถูก Window ครอบจะไม่ปรากฏใน Viewport ดังรูป