Einzelnen Beitrag anzeigen

Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Prüfen ob Punkt auf Linie

  Alt 21. Feb 2010, 10:55
Zitat von mkinzler:
Irgendeine Näherung muss man aber machen. Man könnte die dicke der Linie erhöhen
Ja klar. Das Problem dabei ist nur folgendes.. Wenn ich den obigen Code nehme. So könnte es sein, dass alle drei Punkte auf einer Linie liegen aber die Prozedur zurückgibt, dass sie nicht auf einer Linie liegen.

Die Liniendicke (pen.width) ließe sich meiner Meinung nach genauso wie die Toleranz recht einfach einbauen:
Delphi-Quellcode:
function Collinear(x1, y1, x2, y2, x3, y3: Double): Boolean; //x2,y2 ist der Punkt auf den geklickt wurde
var i: integer;
begin
  for i:=-(toleranz+liniendicke) to (toleranz+liniendicke) do
  begin
   if ((((x2+i) - x1) * (y3 - y1) - (x3 - x1) * ((y2+i) - y1)) = 0) then
    begin
     result:=true;
     exit;
    end
   else result:=false;
  end;

end;

mfg Kahpee
  Mit Zitat antworten Zitat