Ja, die Koordinaten würde man von kartesisch nach polar wandeln. In Polarkoordinaten ist's trivial.Zitat von yaro
Zur Berechnung des Winkels gibt's in C die atan2-Funktion, die auch den Quadranten berücksichtigt.Zitat von yaro
Wenn du solche Funktionen nicht verwenden kannst/darfst (zB auf AVR ist das übel) dann solltest du darauf hinweisen, ansonsten ist's hier Lesen ausm Kaffeesetz.
Für den Cosinus des Winkels hast du
cos(phi) = x1*x2 + y1*y2
An nächsten an deinem Punkt liegt derjenige mit dem größten Cosinus-Wert.
Die Orientierung bekommst du mit
sin(phi) = x1*y2 - x2*y1
wobei das Vorzeichen abhängig ist von dem Rotationssinn den du gerne hättest.
Bei 4 Punkten vergibst du dir nix. Ergo: Such aus allen Punkten deren sin das richtige Vorzeichen hat, denjenigen mit dem ghrößten cos-Wert.
Pro Punkt brauchst du höchstens 4 Multiplikationen, 2 Subtraktionen und 2 Vergleiche. Es geht aber auch mit 3 Multiplikationen wenn die wesentlich teurer sein sollten als ne Strichrechnung.
Lesezeichen