float dy = p2y - p1y, dx = p2x - p1x;
float d = Math.abs(dy*p3x - dx*p3y + p2x*p1y - p2y*p1x) / (dy*dy + dx*dx);
boolean punktAufLinie = d < 1E-3f; // <- beliebiges Epsilon
Was sollWenn du Fließkommaarithmetik verwendest und die Linie nicht exakt entlang einer der beiden Hauptaxen verläuft, wird der Punkt P3 niemals _exakt_ auf der Linie sein. Du kannst hier nur mit einem maximalen Margin/Epsilon rechnen. Und dann einfach lineare Algebra anwenden:
Java:float dy = p2y - p1y, dx = p2x - p1x; float d = Math.abs(dy*p3x - dx*p3y + p2x*p1y - p2y*p1x) / (dy*dy + dx*dx); boolean punktAufLinie = d < 1E-3f; // <- beliebiges Epsilon
sein? Woher kommt 1E und 3f????boolean punktAufLinie = d < 1E-3f; // <- beliebiges Epsilon