HSG

Aktuelle Seite: HSG/Fächer/Informatik/Material

Eine Inside-Funktion für konvexe Polygone

Wir gehen davon aus, dass die Ecken des Polygons im Gegenuhrzeigersinn, also linksherum umlaufen werden. Dann liegt ein Punkt z.B. B, genau dann im Inneren des Polygons, wenn der Punkt links von jeder Kante (dh. ccw = +1) liegt. Im Beispiel liegt A außerhalb, weil
ccw(P0,P1,A) = -1 gilt. Für den Punkt C gilt sogar ccw(P2,P3,C) = -1 und ccw(P3,P4,C) = -1.
Dass die Überlegung für nicht-konvexe Polygone nicht mehr gilt, zeigt der zweite Teil der Skizze: D liegt innerhalb des Polygons, aber ccw(P2,P3,D) = -1.


Eine mögliche Realisierung der Funktion zeigt folgender Quelltext-Auszug:

  function inside(Punkt : TPunkt; P : array of TPunkt) : boolean;
  var
    i,n   : integer;
    innen : boolean;
  begin
    n := Length(P);
    innen := true;
    i := 0;
    while (i 


inside.zip