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