Daniel Thoma: Punkte gegen den Uhrzeigersinn sortieren

Beitrag lesen

Hallo Claudius,

Beispiel:
A = (3,0)
B = (2,2)
C = (0,3)

Punkt mit größtem X-Wert: A
Punkt mit dem größten Y-Wert: C
Ergebnis: A, C, B
Richtig wäre aber: A, B, C

Meine spontane Idee wäre:
Baue aus A und B eine Geradengleichung der Form:
ax+c-y=0
Für Punkte "rechts" gilt dann ax+c-y>0 für die "links" ax+c-y<0

Das gibt also folgendes Programm:
f(x,y) = ((B.Y-A.Y)/(B.X-A.X))*(x-A.X)+B.X
if (f(C.X, C.Y) > 0) {
  return [A, C, B];
} else if (f(C.X, C.Y) < 0) {
  return [A, B, C];
} else {
  return null; // kein Dreieck.
}

Grüße

Daniel