- //Dieser Code darf unter den Bedinugen der MPL verwendet werden.
 - //(Zu finden etwa unter http://www.mozilla.org/MPL/MPL-1.1.html)
 - type
 - TRealPoint=record X,Y:Real; end;
 - TWegChecker=class
 - protected
 - XAchse:TRealPoint;
 - YAchse:TRealPoint;
 - PosVektor:TRealPoint;
 - AbstandAB:Real;
 - public
 - procedure SetData(const A,B:TRealPoint);
 - function AufunterschiedlicherSeite(const A1,B1:TRealPoint;const A2,B2:TRealPoint):Boolean;
 - function PunktUmrechnen(P:TRealPoint):TRealPoint;
 - end;
 - implementation
 - procedure TWegChecker.SetData(const A,B:TRealPoint);
 - begin
 - //XAchse zeigt von A nach B
 - XAchse.X := B.X-A.X;
 - XAchse.Y := B.Y-A.Y;
 - //Länge von X und Y-Achse
 - AbstandAB := Sqrt(XAchse.X*XAchse.X + XAchse.Y*XAchse.Y);
 - //XAchse in Einheits Vektor verwandeln.
 - XAchse.X := XAchse.X/AbstandAB;
 - XAchse.Y := XAchse.Y/AbstandAB;
 - //Die Achse von dem Koordianten System welches entgegenwirkt.
 - XAchse.Y := -XAchse.Y;//XAchse wird an der richtigen XAchse gespiegelt.
 - //Einen senkrechten Vektor zur X-Achse als Y-Achse verwenden.
 - YAchse.X := -XAchse.Y;
 - YAchse.Y := XAchse.X;
 - //A als Koordianten Ursprung
 - PosVektor := A;
 - end;
 - function TWegChecker.PunktUmrechnen(P:TRealPoint):TRealPoint;
 - begin
 - // a) Neuer Koordianten Ursprung
 - P.X := P.X-PosVektor.X;;
 - P.Y := P.Y-PosVektor.Y;;
 - // b) Koordianten auf das neue KoordiantenSystem umstellen.
 - // Vektoren addieren: KX * XAchse (+) KY*YAchse
 - result.X := P.X*XAchse.X + P.Y*YAchse.X;//Erhaltene X Werte zusammenzählen
 - result.Y := P.X*XAchse.Y + P.Y*YAchse.Y;//Erhaltene Y Werte zusammenzählen
 - end;
 - function TWegChecker.AufunterschiedlicherSeite(const A1,B1:TRealPoint;const A2,B2:TRealPoint):Boolean;
 - var
 - NeuA,NeuB:TRealPoint;
 - begin
 - SetData(A1,B1);//Koordinaten System festlegen
 - NeuA := PunktUmrechnen(A2);//Position von A2 im neuen Koordinaten System
 - NeuB := PunktUmrechnen(B2);//Position von B2 im neuen Koordinaten System
 - result := (NeuA.y < 0) xor (NeuB.y < 0); //Unterschiedliche Vorzeichen?
 - end;
 
