Diese beiden Zeilen sind effektiv Punkte, aber wenn ich die LineIntersects-Methode ausführen, bekomme ich "True" als Rückgabewert, weiß jemand, was ist los oder ist das ein Fehler? Hier ist die documentation link und hier ist die source, keine warnen über Sonderfälle, wenn dies fehlschlagen könnte.Java Line2D ZeilenIntersect gebrochen
import java.awt.geom.*;
public class Test {
public static void main(String[] args) {
// x1, y1, x2, y2
Line2D l1 = new Line2D.Double(1.0, 1.0, 1.0, 1.0);
Line2D l2 = new Line2D.Double(2.0, 2.0, 2.0, 2.0);
System.out.println(l1.intersectsLine(l2)); // true
}
}
FYI renne ich java version „1.8.0_74“
Außerdem akzeptiert die Line2D-Klasse von Java "Liniensegmente", die definitionsgemäß aus zwei verschiedenen Punkten gebildet werden. Obwohl ich immer noch denke, dass Java einen schlampigen Job gemacht hat, um diesen Randfall durchkommen zu lassen. –
@ will.fiset Wirklich alles, was sie falsch gemacht haben, konnte undefiniertes Verhalten für entartete Segmente nicht dokumentieren. Exakte Fließkomma-Vergleiche sind einfach nutzlos, und jede Art von Epsilon-basierten Berechnungen ist ziemlich teuer und unwahrscheinlich, die meisten Benutzer zu helfen. – Gene