ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
โครงข่ายสามเหลี่ยมของรูปหลายเหลี่ยม (อังกฤษ:Polygon Triangulation) คือการแบ่งรูปหลายเหลี่ยมเป็นเซ็ทของสามเหลี่ยมที่มากกว่า 1 รูป ซึ่งไม่ทับกันเลย สำหรับขั้นตอนวิธีที่ใช้ในการแบ่งนั้นสำหรับรูปหลายเหลี่ยมที่มีและไม่มีรูภายในจะแตกต่างกัน
โครงร่างสามเหลี่ยมของรูปหลายเหลี่ยมแบบไม่มีจุดยอดเพิ่มเติม
วิธีการตัดหู (Ear Clipping Method)
วิธีที่ได้รับความนิยมและง่ายในการเขียนวิธีหนึ่งคือการตัดสามเหลี่ยมที่เป็น “หู” สามเหลี่ยมที่เป็นหูคือสามเหลี่ยมที่มีด้าน 2 ด้านอยู่ที่ขอบของรูปหลายเหลี่ยมและด้านที่เหลืออยู่ในด้านในทั้งหมด ซึ่งวิธีนี้จะใช้ได้กับรูปหลายเหลี่ยมที่ไม่มีรูภายในเท่านั้น โดยรูปหลายเหลี่ยมเหล่านั้นที่มีมุมมากกว่า 4 มุมขึ้นไป จะมี 2 หูเป็นอย่างน้อย หลังจากตัดทิ้งไปแล้วก็จะได้รูปหลายเหลี่ยมใหม่ที่มีจุดยอดมากกว่าเท่ากับ 3 ให้ทำต่อไปเรื่อยๆจนหมดก็จะได้เซ็ทของสามเหลี่ยมทั้งหมด ซึ่งเวลาที่ใช้จะเป็น วิธีในการหาหูนั้นถูกค้นพบโดย Hossam ElGindy, Hazel EverettHazel Everett และ Godfried Toussaint โดยในการหาหูจะใช้เวลาเป็น
รหัสเทียม
กำหนดให้ GSP คือรูปหลายเหลี่ยมย่อยของ P ที่เกิดจากการลากเส้นทแยงมุมจากมุมหนึ่งไปสู่อีกมุมหนึ่งเพียงเส้นเดียว
Function FindAnEar (GSP, pi) if pi is an ear then return pi Find a vertex pj such that (pi, pj) is a diagonal of GSP.Let GSP' be the good sub-polygon of GSP formed by (pi, pj).
Re-label the vertices of GSP' so that pi = p0 and pj = pk-1 (or pj = p0 and pi = pk-1 as appropriate) where k is the number of vertices of GSP'. FindAnEar (GSP', floor (k/2)) End FindAnEar
วิธีรูปหลายเหลี่ยมทางเดียว (Monotone Polygons Method)
เราสามารถแบ่งรูปหลายเหลี่ยมให้กลายเป็นรูปหลายเหลี่ยมทางเดียวได้
ขั้นตอนวิธี
1. แยกรูปหลายเหลี่ยมให้กลายเป็นสี่เหลี่ยมคางหมู
กำหนดให้ S คือเซ็ทของเส้นขอบของรูปหลายเหลี่ยมที่ไม่ใช่เส้นแนวนอนและไม่ตัดกัน ขั้นตอนวิธีแบบสุ่ม (อังกฤษ: Randomised Algorithm) จะถูกใช้เพื่อสร้างสี่เหลี่ยมคางหมูจากเส้นตรงใน S ซึ่งจะทำโดยจะดึงเส้นตรงใน S ออกมาทีละเส้นแบบสุ่มเพื่อสร้างเป็นสี่เหลี่ยมคางหมู วิธีนี้จะแบ่งรูปหลายเหลี่ยมเป็นสี่เหลี่ยมคางหมูจำนวนหนึ่งตัวสี่เหลี่ยมคางหมูนี้สามารถลดรุปเป็นสามเหลี่ยมได้ถ้ามีขอบด้านใดด้านหนึ่งมีความยาวด้านนอนเป็นศูนย์ สำหรับเงื่อนไขที่ว่าเส้นในเซ็ทจะต้องไม่เป็นเส้นนอนนั้นมีขึ้นเพื่อจำกัดจำนวนที่ต้องทำให้ลดน้อยลง แต่ก็ไม่ได้ส่งผลอะไรต่อผลลัพธ์ที่จะได้ ซึ่งจากที่ Siedal ได้พิสูจน์ไว้เราสรุปได้ว่าขั้นตอนนี้ใช้เวลาในการทำงานเป็น
2.แยกสี่เหลี่ยมคางหมูออกเป็นรูปหลายเหลี่ยมทางเดียว
รูปหลายเหลี่ยมทางเดียวคือรูปหลายเหลี่ยมที่มีสายโซ่ทางเดียวในแกน 2 สาย รูปหลายเหลี่ยมเหล่านี้จะถูกคำนวณจากการแบ่งรูปเป็นสี่เหลี่ยมคางหมูโดยการตรวจสอบว่ามุม 2 มุมหนึ่งๆของรูปหลายเหลี่ยมเดิมนั้นอยู่บนฝั่งเดียวกันหรือไม่ ขั้นตอนนี้ใช้เวลาเป็นเชิงเส้น
3.แยกรูปหลายเหลี่ยมทางเดียวเป็นสามเหลี่ยม
รูปหลายเหลี่ยมทางเดียวสามารถแยกเป็นสามเหลี่ยมได้โดยใช้ขั้นตอนวิธีเชิงละโมบ โดยให้ตัดมุมเว้าไปเรื่อยๆ ซึ่งในส่วนนี้จะใช้เวลาเป็น
รหัสเทียม
Input: Monotone polygon P Output: Set of triangles Sort the n vertices belonging to polygon P with respect to x-coordinate and store them in V. Initialize sweep-line active list L L = a list with the first two points of V WHILE V is not empty DO /* Extract the next vertex from V */ p = MIN (V) IF (p is opposite to points in L) THEN WHILE |L| > 1 DO Output Triangle {First (L), Second (L),p} REMOVE (FIRST (L)) Add p to L ELSE WHILE (Angle{Last (L), Previous (Last (L)), p}is convex .AND. |L| > 1) DO Output Triangle {last (L), Previous (last), p} REMOVE last (L) /* The angle is reflex or cardinality of L is 1 */ Add p to L
ความซับซ้อนในการคำนวณ
โครงข่ายสามเหลี่ยมของรูปหลายเหลี่ยมนั้นเป็นปัญหาที่มีการคิดกันมานานแล้วว่าจะสามารถทำให้ได้ไวกว่า ได้หรือไม่ ในปี 1990 นั้น David G. Kirkpatrick,David G. Kirkpatrick, Robert E. Tarjan ได้ค้นพบขั้นตอนวิธีที่ใช้เวลาเพียง สำหรับวิธีใช้ขั้นตอนวิธีแบบสุ่มนั้นเช่นขั้นตอนวิธีของ Seidel's or Clarkson et al.'s, ใช้เวลาเป็น ซึ่งในความเป็นจริงแล้วแทบไม่ต่างอะไรกับ เลย
นอกจากวิธีการข้างต้นแล้ว Bernard Chazelle ยังได้แสดงให้เห็นว่าโครงข่ายสามเหลี่ยมของรูปหลายเหลี่ยมนั้นสามารถหาได้ด้วยเวลาเชิงเส้น แต่ขั้นตอนวิธีนั้นมีความซับซ้อนมาก ต่อมาในปี 1998 ขั้นตอนวิธีที่ใช้เวลาเฉลี่ยเป็น ก็ได้ถูกค้นพบและตีพิมพ์โดย Alexey V. Skvortsov และ Yuri L. Kostyuk โดยขั้นตอนวิธีนี้จะใช้หลักการของกำหนดการพลวัตในการจำรูปสามเหลี่ยม
ส่วนความซับซ้อนทางด้านเวลาของขั้นตอนวิธีในการหาโครงข่ายสามเหลี่ยมของรูปสามเหลี่ยมที่มีรูภายในนั้นจะใช้เวลาเป็น
เนื้อหาอื่นๆที่เกี่ยวข้องหรือใกล้เคียง
- http://sigbjorn.vik.name/projects/Triangulation.pdf 2011-08-27 ที่ เวย์แบ็กแมชชีน, An Implementation of a Near-Linear Polygon
Triangulation Algorithm for General Polygons
- Demo as Flash swf 2010-11-10 ที่ เวย์แบ็กแมชชีน, A Sweep Line algorithm.
อ้างอิง
- , , , and (2000), Computational Geometry (2nd revised ed.), , ISBN
{{}}
: CS1 maint: multiple names: authors list () Chapter 3: Polygon Triangulation: pp.45–61. - ; Montuno, D. Y. (1984), "Triangulating simple polygons and equivalent problems", , 3 (2): 153–174, doi:10.1145/357337.357341, ISSN 0730-0301
- Toussaint, Godfried T. (1984), "A new linear algorithm for triangulating monotone polygons," Pattern Recognition Letters, 2 (March) :155–158.
- Meisters, G. H., "Polygons have ears." American Mathematical Monthly 82 (1975). 648–651
- ElGindy, H., Everett, H., and Toussaint, G. T., (1993) "Slicing an ear using prune-and-search," Pattern Recognition Letters, 14, (9) :719–722.
- (1991), "A Simple and Fast Incremental Randomized Algorithm for Computing Trapezoidal Decompositions and for Triangulating Polygons", Computational Geometry: Theory and Applications, 1: 51–64
- (1991), "Triangulating a Simple Polygon in Linear Time", Discrete & Computational Geometry, 6: 485–524, doi:10.1007/BF02574703, ISSN 0179-5376
- Skvortsov, Alexey V., Kostyuk, Yuri L. (1998), (PDF), Geoinformatics. Theory and practice, Tomsk State University, 1: 22–47, คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2011-09-29, สืบค้นเมื่อ 2011-09-17
{{}}
: CS1 maint: multiple names: authors list () (รัสเซีย) - Amato, Nancy M.; ; Ramos, Edgar A. (2001), , Discrete & Computational Geometry, 26 (2): 245–265, doi:10.1007/s00454-001-0027-x, ISSN 0179-5376, คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2018-07-23, สืบค้นเมื่อ 2011-09-17
- http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Ian/cutting_ears.html
- http://www.personal.kent.edu/~rmuhamma/Compgeometry/MyCG/PolyPart/polyPartition.html[]
- http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisud okhrngkhaysamehliymkhxngruphlayehliym xngkvs Polygon Triangulation khuxkaraebngruphlayehliymepnesthkhxngsamehliymthimakkwa 1 rup sungimthbknely sahrbkhntxnwithithiichinkaraebngnnsahrbruphlayehliymthimiaelaimmiruphayincaaetktangknokhrngrangsamehliymkhxngruphlayehliymaebbimmicudyxdephimetimwithikartdhu Ear Clipping Method hukhxngruphlayehliym withithiidrbkhwamniymaelangayinkarekhiynwithihnungkhuxkartdsamehliymthiepn hu samehliymthiepnhukhuxsamehliymthimidan 2 danxyuthikhxbkhxngruphlayehliymaeladanthiehluxxyuindaninthnghmd sungwithinicaichidkbruphlayehliymthiimmiruphayinethann odyruphlayehliymehlannthimimummakkwa 4 mumkhunip cami 2 huepnxyangnxy hlngcaktdthingipaelwkcaidruphlayehliymihmthimicudyxdmakkwaethakb 3 ihthatxiperuxycnhmdkcaidesthkhxngsamehliymthnghmd sungewlathiichcaepn O n2 displaystyle O n 2 withiinkarhahunnthukkhnphbody Hossam ElGindy Hazel EverettHazel Everett aela Godfried Toussaint odyinkarhahucaichewlaepn O n displaystyle O n rhsethiym kahndih GSP khuxruphlayehliymyxykhxng P thiekidcakkarlakesnthaeyngmumcakmumhnungipsuxikmumhnungephiyngesnediyw Function FindAnEar GSP pi if pi is an ear then return pi Find a vertex pj such that pi pj is a diagonal of GSP Let GSP be the good sub polygon of GSP formed by pi pj Re label the vertices of GSP so that pi p0 and pj pk 1 or pj p0 and pi pk 1 as appropriate where k is the number of vertices of GSP FindAnEar GSP floor k 2 End FindAnEar withiruphlayehliymthangediyw Monotone Polygons Method karaebngruphlayehliymepnruphlayehliymthangediyw erasamarthaebngruphlayehliymihklayepnruphlayehliymthangediywid khntxnwithi 1 aeykruphlayehliymihklayepnsiehliymkhanghmu kahndih S khuxesthkhxngesnkhxbkhxngruphlayehliymthiimichesnaenwnxnaelaimtdkn khntxnwithiaebbsum xngkvs Randomised Algorithm cathukichephuxsrangsiehliymkhanghmucakesntrngin S sungcathaodycadungesntrngin S xxkmathilaesnaebbsumephuxsrangepnsiehliymkhanghmu withinicaaebngruphlayehliymepnsiehliymkhanghmucanwnhnungtwsiehliymkhanghmunisamarthldrupepnsamehliymidthamikhxbdaniddanhnungmikhwamyawdannxnepnsuny sahrbenguxnikhthiwaesninesthcatxngimepnesnnxnnnmikhunephuxcakdcanwnthitxngthaihldnxylng aetkimidsngphlxairtxphllphththicaid sungcakthi Siedal idphisucniwerasrupidwakhntxnniichewlainkarthanganepn O nlogn displaystyle O nlogn 2 aeyksiehliymkhanghmuxxkepnruphlayehliymthangediyw ruphlayehliymthangediywkhuxruphlayehliymthimisayosthangediywinaekn y displaystyle y 2 say ruphlayehliymehlanicathukkhanwncakkaraebngrupepnsiehliymkhanghmuodykartrwcsxbwamum 2 mumhnungkhxngruphlayehliymedimnnxyubnfngediywknhruxim khntxnniichewlaepnechingesn O n displaystyle O n 3 aeykruphlayehliymthangediywepnsamehliym ruphlayehliymthangediywsamarthaeykepnsamehliymidodyichkhntxnwithiechinglaomb odyihtdmumewaiperuxy sunginswnnicaichewlaepn O n displaystyle O n rhsethiym Input Monotone polygon P Output Set of triangles Sort the n vertices belonging to polygon P with respect to x coordinate and store them in V Initialize sweep line active list L L a list with the first two points of V WHILE V is not empty DO Extract the next vertex from V p MIN V IF p is opposite to points in L THEN WHILE L gt 1 DO Output Triangle First L Second L p REMOVE FIRST L Add p to L ELSE WHILE Angle Last L Previous Last L p is convex AND L gt 1 DO Output Triangle last L Previous last p REMOVE last L The angle is reflex or cardinality of L is 1 Add p to L khwamsbsxninkarkhanwn okhrngkhaysamehliymkhxngruphlayehliymnnepnpyhathimikarkhidknmananaelwwacasamarththaihidiwkwa O nlogn displaystyle O nlogn idhruxim inpi 1990 nn David G Kirkpatrick David G Kirkpatrick Robert E Tarjan idkhnphbkhntxnwithithiichewlaephiyng O nloglogn displaystyle O nloglogn sahrbwithiichkhntxnwithiaebbsumnnechnkhntxnwithikhxng Seidel s or Clarkson et al s ichewlaepn O nlog n displaystyle O nlog n sunginkhwamepncringaelwaethbimtangxairkb O n displaystyle O n ely nxkcakwithikarkhangtnaelw Bernard Chazelle yngidaesdngihehnwaokhrngkhaysamehliymkhxngruphlayehliymnnsamarthhaiddwyewlaechingesn aetkhntxnwithinnmikhwamsbsxnmak txmainpi 1998 khntxnwithithiichewlaechliyepn O n displaystyle O n kidthukkhnphbaelatiphimphody Alexey V Skvortsov aela Yuri L Kostyuk odykhntxnwithinicaichhlkkarkhxngkahndkarphlwtinkarcarupsamehliym swnkhwamsbsxnthangdanewlakhxngkhntxnwithiinkarhaokhrngkhaysamehliymkhxngrupsamehliymthimiruphayinnncaichewlaepn W nlogn displaystyle Omega nlogn enuxhaxunthiekiywkhxnghruxiklekhiynghttp sigbjorn vik name projects Triangulation pdf 2011 08 27 thi ewyaebkaemchchin An Implementation of a Near Linear Polygon Triangulation Algorithm for General Polygons Demo as Flash swf 2010 11 10 thi ewyaebkaemchchin A Sweep Line algorithm xangxing and 2000 Computational Geometry 2nd revised ed ISBN 3 540 65620 0 a href wiki E0 B9 81 E0 B8 A1 E0 B9 88 E0 B9 81 E0 B8 9A E0 B8 9A Citation title aemaebb Citation citation a CS1 maint multiple names authors list lingk Chapter 3 Polygon Triangulation pp 45 61 Montuno D Y 1984 Triangulating simple polygons and equivalent problems 3 2 153 174 doi 10 1145 357337 357341 ISSN 0730 0301 Toussaint Godfried T 1984 A new linear algorithm for triangulating monotone polygons Pattern Recognition Letters 2 March 155 158 Meisters G H Polygons have ears American Mathematical Monthly 82 1975 648 651 ElGindy H Everett H and Toussaint G T 1993 Slicing an ear using prune and search Pattern Recognition Letters 14 9 719 722 1991 A Simple and Fast Incremental Randomized Algorithm for Computing Trapezoidal Decompositions and for Triangulating Polygons Computational Geometry Theory and Applications 1 51 64 1991 Triangulating a Simple Polygon in Linear Time Discrete amp Computational Geometry 6 485 524 doi 10 1007 BF02574703 ISSN 0179 5376 Skvortsov Alexey V Kostyuk Yuri L 1998 PDF Geoinformatics Theory and practice Tomsk State University 1 22 47 khlngkhxmulekaekbcakaehlngedim PDF emux 2011 09 29 subkhnemux 2011 09 17 a href wiki E0 B9 81 E0 B8 A1 E0 B9 88 E0 B9 81 E0 B8 9A E0 B8 9A Citation title aemaebb Citation citation a CS1 maint multiple names authors list lingk rsesiy Amato Nancy M Ramos Edgar A 2001 Discrete amp Computational Geometry 26 2 245 265 doi 10 1007 s00454 001 0027 x ISSN 0179 5376 khlngkhxmulekaekbcakaehlngedimemux 2018 07 23 subkhnemux 2011 09 17 http cgm cs mcgill ca godfried teaching cg projects 97 Ian cutting ears html http www personal kent edu rmuhamma Compgeometry MyCG PolyPart polyPartition html lingkesiy http www cs unc edu dm CODE GEM chapter html