งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Computer Graphics with OpenGL 3e

งานนำเสนอเรื่อง: "Computer Graphics with OpenGL 3e"— ใบสำเนางานนำเสนอ:

Computer Graphics with OpenGL 3e

Chapter 4 Attribute of Graphics Primitives

Fill-area attributes Graphics packages limit fill area to polygon
Describe object as linear equations Fill style Hollow, solid and patterned Fill pattern A mask to be applied to the display area described in rectangular arrays that list different colors for different positions in the array Color-Blended fill regions Combine a fill pattern with background color Example: transparency Simple logical operation Soft-fill algorithm © 2005 Pearson Education

Fill-area attributes “Polygon” (รูปหลายเหลี่ยม) can be generally thought of as a shape Formed by a line segments that are placed end to end to create a continuous closed path Three basic types Convex, concave, and complex © 2005 Pearson Education

Identifying Concave/Convex
Setup vectors for all edges Perform cross product to adjacent vectors to test for concavity Perform dot product if we want to determine the angle between two edges All vector products will be the same value (positive or negative) for convex polygon If there are some cross products yield a positive and some yield a negative value, we have a concave polygon © 2005 Pearson Education

Identifying Concave (cont.)
Vn Ej V6 E5 V5 Vm E4 Ej = (Vnx – Vmx , Vny – Vmy) V4 E3 (E1 X E2) > 0 (E2 X E3) > 0 (E3 X E4) < 0 (E4 X E5) > 0 (E5 X E6) > 0 (E6 X E1) > 0 E6 V3 E2 V2 E1 V1 EJ X EK = EJXEKY - EJYEKX © 2005 Pearson Education

Example Given 6 vertices:
Prove that these vertices is for concave polygon. What can you say about the cross product values if we change the order of these vertices (v6 becomes v1, v5 becomes v2, etc…). © 2005 Pearson Education

Exact angle between two adjacent edges Use dot product operation
Angle between Edges Exact angle between two adjacent edges Use dot product operation a.b = |a||b|cos θ |a| means the magnitude of vector a θ © 2005 Pearson Education

Angle Between Edges Example:
Given 2 vectors a = (2,3) and b = (6,3). Determine the angle between these two vectors Determine the angle between E3 and E4 (refer to previous example) © 2005 Pearson Education

Fill-area attributes Convex or Concave polygons? Complex polygon

Fill-area attributes How is a filled polygon different from an unfilled one? When an unfilled polygon is rendered, only the points on the perimeter of the polygon are drawn When a polygon is filled, the interior of the polygon must be considered © 2005 Pearson Education

Inside and Outside Test
In order to determine which pixels are inside polygon Odd-Even Rule (Odd-parity rule) Nonzero Winding Number Rule © 2005 Pearson Education

Inside and Outside Test
Nonzero Winding Number Rule Count the number of times the boundary of an object “winds” around a particular point in the counterclockwise direction Wn++ Wn- - wn = winding number If wn ≠ 0, such point is interior pixel of the polygon Otherwise, such point is exterior pixel of the polygon © 2005 Pearson Education

Inside and Outside Test
Problem in complex shape © 2005 Pearson Education

Polygon-fill Algorithm
General scan-line polygon-fill algorithm Applied to concave / convex polygon With help of mid-point method to determine intersection when applied to curved areas Boundary-fill algorithm Filling irregular areas Start at an inside position and “paint” interior © 2005 Pearson Education

General Scan-Line Polygon-fill Algorithm

General Scan-Line Polygon-fill Algorithm

General Scan-Line Polygon-fill Algorithm
Exceptions!!! กรณีที่ scan line ตัดผ่านจุดยอดของ polygon พอดี เช่นที่จุดหมายเลข 2 Case 1 : Scan line y’ two intersection edges are both above the scan line Case 2 : Scan line y two edges sharing an intersection vertex are on opposite sides of the scan line © 2005 Pearson Education

General Scan-Line Polygon-fill Algorithm
การระบุว่า scan line ของกรณี Exceptions จัดอยู่ในรูปแบบใด สามารถทำได้ดังนี้ เดิน (trace) ตามเส้นขอบ polygon เพื่อพิจารณา 3 จุดยอดใด ๆ ที่อยู่ติดกัน ในทิศ ทวนเข็ม หรือ ตามเข็มนาฬิกา ก็ได้ สังเกตลักษณะการเปลี่ยนแปลงค่า y จากจุดยอดทั้ง 3 จุด ถ้าค่า y เปลี่ยนแปลง ไปในทิศทางตรงกันข้าม แสดงว่าจุดยอดตรงกลางเป็น กรณีที่ 1 : เพิ่มจุดตัดซ้ำ 2 จุด ถ้าค่า y ลดลงตลอด (หรือเพิ่มขึ้นตลอด) แสดงว่าจุดยอดตรงกลางเป็น กรณีที่ 2 : ให้หดเส้นของลง 1 scan line © 2005 Pearson Education

General Scan-Line Polygon-fill Algorithm

General Scan-Line Polygon-fill Algorithm
Coherent Polygon Processing เราสามารถใช้ประโยชน์ ความเกี่ยวเนื่องกันขององค์ประกอบ polygon สำหรับ scan line ที่ติดกัน มาใช้เพื่อเพิ่มประสิทธิภาพในการประมวลผลได้ © 2005 Pearson Education

General Scan-Line Polygon-fill Algorithm
An Efficient Polygon Algorithm © 2005 Pearson Education

General Scan-Line Polygon-fill Algorithm
Scan-Line Algorithm Identifying sharing vertex โดย trace 3 vertices ใด ๆ ที่อยู่ติดกันเพื่อดูการเปลี่ยนแปลงของค่า y ทำการ shorten edge ในกรณีที่จุดยอด (vertex) ตัดผ่าน scan line พอดี เพื่อแยกแยะชนิดของจุดแบ่งเส้น scan line จัดเก็บข้อมูลของแต่ละ edge ในรูป y-min, y-max, x-val (of y-min) และ Δx/ Δy (1/m) ตามลำดับ 4. สร้าง sorted edge table เพื่อนำมาใช้เป็น active edge table ของแต่ละ scan line 5. ทำการระบายสี polygon ทีละ scan line © 2005 Pearson Education

Boundary-Fill Algorithm
In many graphics packages the user can fill a region (defined by a boundary). In the figure, the boundary is red and the filling color is blue The user needs to click inside the region (seed) © 2005 Pearson Education

Boundary-Fill Algorithm
Employed in interactive painting packages Using recursive method with procedure Start from an interior inside point, test neighboring position Fill color in that position if it is not the boundary Two area fill method 4-connect or 8-connected © 2005 Pearson Education

Boundary-Fill Algorithm
ต้องการ input จำนวน 3 ตัว : 1)พิกัดเริ่มต้น (x, y) ที่อยู่ภายในบริเวณที่ต้องการระบาย 2) สีที่ต้องการระบาย 3) สีของขอบของบริเวณ © 2005 Pearson Education

Boundary-Fill Algorithm

Boundary-Fill Algorithm

Boundary-Fill Algorithm