A triangular mesh generator rests on the efficiency of its triangulation algorithms and data structures, so I discuss these first. I assume the reader is familiar with Delaunay triangulations, constrained Delaunay triangulations, and the incremental insertion algorithms for constructing them. Consult the survey by Bern and Eppstein [2] for an introduction.
There are many Delaunay triangulation algorithms, some of which are surveyed and evaluated by Fortune [7] and Su and Drysdale [18]. Their results indicate a rough parity in speed among the incremental insertion algorithm of Lawson [11], the divide-and-conquer algorithm of Lee and Schachter [12], and the plane-sweep algorithm of Fortune [6]; however, the implementations they study were written by different people. I believe that Triangle is the first instance in which all three algorithms have been implemented with the same data structures and floating-point tests, by one person who gave roughly equal attention to optimizing each. (Some details of how these implementations were optimized appear in Appendix A.)
Table 1 compares the algorithms, including versions that use exact arithmetic (see Section 4) to achieve robustness, and versions that use approximate arithmetic and are hence faster but may fail or produce incorrect output. (The robust and non-robust versions are otherwise identical.) As Su and Drysdale [18] also found, the divide-and-conquer algorithm is fastest, with the sweepline algorithm second. The incremental algorithm performs poorly, spending most of its time in point location. (Su and Drysdale produced a better incremental insertion implementation by using bucketing to perform point location, but it still ranks third. Triangle does not use bucketing because it is easily defeated, as discussed in the appendix.) The agreement between my results and those of Su and Drysdale lends support to their ranking of algorithms.
An important optimization to the divide-and-conquer algorithm, adapted from Dwyer [5], is to partition the vertices with alternating horizontal and vertical cuts (Lee and Schachter's algorithm uses only vertical cuts). Alternating cuts speed the algorithm and, when exact arithmetic is disabled, reduce its likelihood of failure. One million points can be triangulated correctly in a minute on a fast workstation.
สร้างตาข่ายสามเหลี่ยมอยู่บนประสิทธิภาพของระบบสามสกุลอัลกอริทึมและข้อมูลโครงสร้าง ดังนั้นฉันสนทนาแรกเหล่านี้ สมมติว่า ผู้อ่านจะคุ้นเคยกับ Delaunay triangulations, triangulations Delaunay จำกัด และอัลกอริทึมการแทรกเพิ่มขึ้นสำหรับการสร้างพวกเขา ศึกษาสำรวจ โดยเบิร์นและ Eppstein [2] สำหรับบทนำมีหลาย Delaunay สามอัลกอริทึม บางที่สำรวจ และประเมิน โดยฟอร์จูน [7] และ Su และ Drysdale [18] พาริตี้ที่หยาบในความเร็วระ หว่างอัลกอริทึมการแทรกเพิ่มของลอว์สัน [11], อัลกอริทึมแบ่ง และพิชิตลีและ Schachter [12], กวาดเครื่องบินอัลกอริทึมของฟอร์จูน [6]; บ่งชี้ผลลัพธ์ อย่างไรก็ตาม การใช้งานที่พวกเขาศึกษาถูกเขียน โดยคน เชื่อว่าสามเหลี่ยมอินสแตนซ์แรกซึ่งอัลกอริทึมทั้งสามทั้งหมดใช้งานกับโครงสร้างข้อมูลเดียวกันและทดสอบจุดทศนิยม โดยคนที่ให้ความสนใจประมาณเท่าเพิ่มประสิทธิภาพแต่ละ (รายละเอียดวิธีใช้งานเหล่านี้ถูกปรับให้เหมาะสมปรากฏในภาคผนวกเอ)Table 1 compares the algorithms, including versions that use exact arithmetic (see Section 4) to achieve robustness, and versions that use approximate arithmetic and are hence faster but may fail or produce incorrect output. (The robust and non-robust versions are otherwise identical.) As Su and Drysdale [18] also found, the divide-and-conquer algorithm is fastest, with the sweepline algorithm second. The incremental algorithm performs poorly, spending most of its time in point location. (Su and Drysdale produced a better incremental insertion implementation by using bucketing to perform point location, but it still ranks third. Triangle does not use bucketing because it is easily defeated, as discussed in the appendix.) The agreement between my results and those of Su and Drysdale lends support to their ranking of algorithms.An important optimization to the divide-and-conquer algorithm, adapted from Dwyer [5], is to partition the vertices with alternating horizontal and vertical cuts (Lee and Schachter's algorithm uses only vertical cuts). Alternating cuts speed the algorithm and, when exact arithmetic is disabled, reduce its likelihood of failure. One million points can be triangulated correctly in a minute on a fast workstation.
การแปล กรุณารอสักครู่..