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 จะได้ และ จากนั้นนำรหัสของจุดทั้งสองมาทำการ AND  กัน ผลที่ได้ เป็น 0000 ก็แสดงว่า เส้นตรง  P1 ในส่วนจาก ถึง อยู่ใน 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 ดังรูป

 

 

 

Back  Next