Imamo množico točk P = {(1.9,1.1),(2.9,-1.7),(5.7,0.4),(7,-1.2),(4,0),(4.2,-2.3)}.
Najprej poiščemo pivotno točko. To je točka p* = (4.2,-2.3).
Nato preostale točke uredimo glede na naklon premic, ki potekajo skozi pivotno točko in ostale točke v množici.
P = {(2.9,-1.7),(1.9,1.1),(4,0),(5.7,0.4),(7,-1.2)}.
Ustvarimo prazen sklad S. Vanj dodamo p* in p1 = (2.9,-1.7).
Gremo v zanko, ki bo pregledala celotno urejeno množico točk. Za spremenljivko q določimo vrh sklada (v našem primeru točko p1), za spremenljivko p pa določimo točko pod vrhom sklada (v našem primeru p*).
Ker trojica p, q in p2 določa obrat na desno, damo p2 na sklad. Tako imamo v našem skladu točke p*, p1 in p2.
Sedaj gledamo trojico p1, p2 in p3. Ta spet določa desni obrat, zato točko p3 dodamo na sklad. Naš sklad je sedaj videti tako: S = {p*,p1,p2,p3}.
Naslednja trojica bo sedaj p2, p3 in p4. Ta določa levi obrat, zato točko p3 odstranimo iz sklada. S = {p*,p1,p2}.
Trojica p1, p2 in p4 spet določa desni obrat, zato točko p4 damo na sklad. S = {p*,p1,p2,p4}.
Trojica p2, p4 in p5 določa desni obrat, zato točko p5 vstavimo v sklad. S = {p*,p1,p2,p4,p5}.
Ko indeks povečamo, se zanka ne izvede več, zato samo vrnemo sklad. Ta nam predstavlja točke, ki sestavljajo konveksno ogrinjačo.
|
Izris točk uporabljenih v algoritmu in pravilnost rešitve.