Chapter 3 Graphics Output primitives Part II © 2005 Pearson Education
Circle drawing algorithm Ellipse drawing algorithm Overview Circle drawing algorithm Ellipse drawing algorithm © 2005 Pearson Education
Circle Drawing Algorithm Square Root Method Trigonometric Function Midpoint Circle Algorithm © 2005 Pearson Education
Square Root Method เราจะใช้สมการวงกลมที่มีจุดศูนย์กลางที่ (xc,yc) และรัศมี r โดยตรง วิธีวาด “วงกลม” อย่างง่ายที่สุด คือ กำหนดค่า x แล้วคำนวณจุดที่ตำแหน่ง y จาก Question : ข้อเสียของวิธีนี้คืออะไร ? © 2005 Pearson Education
Square Root Method © 2005 Pearson Education
Square Root Method © 2005 Pearson Education
Square Root Method Question : ข้อเสียของวิธีนี้คืออะไร ? การคำนวณใช้เวลาของ CPU มาก ลักษณะของจุดภาพไม่ต่อเนื่อง (นิยามจุดภาพของวงกลมว่าอย่างไร) © 2005 Pearson Education
Trigonometric Function เปลี่ยนสมการเส้นตรงที่เราคุ้นเคยให้เป็นสมการพิกัดเชิงขั้วดังนี้ © 2005 Pearson Education
Trigonometric Function © 2005 Pearson Education
Midpoint Circle Algorithm Mid point Algorithm Useful in drawing curves Determine the closest pixel to the curve path by using the mid-point between two candidate pixels Example, mid-point at xk+1 along a circular path © 2005 Pearson Education
Midpoint Circle Algorithm การวาด วงกลมที่มีจุดศุนย์กลางอยู่ที่ (xc,yc) และรัศมี r สามารถทำได้โดยการเลื่อนวงกลมมาอยู่ที่จุดกำเนิด นั่นคือ (xc,yc) = (0, 0) แล้วหลังจากนั้นจึงเลื่อนไปยังจุดที่ถูกต้อง โดยการบวกจุดภาพ (x, y) ที่ได้ด้วยค่าพิกัด (xc,yc) © 2005 Pearson Education
Midpoint Circle Algorithm คำถาม : สามารถลดเวลาในการคำนวณจุดภาพ (x, y ) เพื่อวาดวงกลมให้เต็มรูป ได้หรือไม่ © 2005 Pearson Education
Midpoint Circle Algorithm ไม่จำเป็นต้องคำนวณหาจุดภาพ (x, y) ทุกจุดของเส้นรอบวง สามารถใช้กฎการสมมาตรเทียบกับแกน x = ±y และแกน x และ y ดังรูป (x, y) (y, x) (y, -x) (x, -y) (-x, -y) (-y, -x) (-y, x) (-x, y) © 2005 Pearson Education
Midpoint Circle Algorithm เลื่อนวงกลมไปจุดกำเนิด คำนวณตัวแปรตัดสินใจเริ่มต้น p0 จากจุดเริ่มต้น (x0, y0) = (0, r) คำนวณจุดภาพที่ (xk+1, yk+1) เริ่มจาก k = 0 โดยใช้ตัวแปรตัดสินใจ pk กรณี pk < 0 คำนวณ xk+1 = xk +1 และ เลือก yk+1 = yk คำนวณ pk+1=pk + 2xk+1 +1 กรณี pk > 0 คำนวณ xk+1 = xk +1 และ เลือก yk+1 = yk-1 คำนวณ pk+1=pk + 2xk+1 +1 – 2yk+1 © 2005 Pearson Education
Midpoint Circle Algorithm Algorithm … cont. สะท้อนจุดที่คำนวณได้ไปยังอีก 7 octants ที่เหลือโดยใช้กฎการสมาตร เลื่อนวงกลมไปยังจุดศูนย์กลางที่ต้องการ ทำซ้ำขั้นตอนที่ 3-5 ขณะที่ x<y © 2005 Pearson Education
Midpoint Circle Algorithm Example จงวาดวงกลมที่มีรัศมี เท่ากับ 10 มีจุดศูนย์กลางอยู่ที่ (0, 0) © 2005 Pearson Education
Midpoint Circle Algorithm Define the implicit of circle function as By putting a point (x, y) into the circle function if fcirc < 0 ; (x, y) is in the circle boundary, if fcirc = 0 ; (x, y) is on the circle boundary, if fcirc > 0 ; (x, y) is outside the circle boundary We can use the circle function as the decision parameter as same as Bresenham’s algorithm © 2005 Pearson Education
Midpoint Circle Algorithm Deriving decision parameter สมมติเราได้วาดจุดภาพ (xk, yk) ไปแล้ว ต่อไปคือพิจารณา เลือกจุด yk และ yk-1 (why?) ซึ่งทำได้โดยคำนวณค่าตัว แปรตัดสินใจ pk ที่ midpoint © 2005 Pearson Education
Midpoint Circle Algorithm © 2005 Pearson Education
Midpoint Circle Algorithm Initial decision parameter © 2005 Pearson Education