Ich bin mir sicher, dass meine Frage sehr allgemein ist, wahrscheinlich eine reine Java-Frage. Ich habe jedoch versucht, mithilfe derselben Logik herauszufinden, ob drei Koordinaten kollinear sind, und habe festgestellt, dass dies für das Beispiel mit „Punkt“ als Eingabe nicht zu funktionieren scheint. Es können zwei Methoden verwendet werden 1. Finden Sie die Fläche des Dreiecks, das drei Koordinaten/Punkte bildet. Wenn sie auf derselben Linie liegen, muss der Flächenwert Null sein. 2. Teilen Sie die Linie, die diese Koordinaten verbindet, in zwei Teile und ermitteln Sie deren jeweilige Steigung. Wenn sie auf derselben Linie liegen, sind die Steigungen gleich.
Hier ist, was ich versuche.
private boolean collinearCheck( Coordinate endPointOne , Coordinate intersection,Coordinate endPointTwo ){ boolean isCollenear = false; //Area of triangle approach double area = (Math.round(endPointOne.x )* (Math.round(intersection.y) - Math.round (endPointTwo.y)) + Math.round(intersection.x )* (Math.round(endPointTwo.y) - Math.round (endPointOne.y)) + Math.round(endPointTwo.x) * (Math.round(endPointOne.y) - Math.round(intersection.y))); if((endPointOne.x * (intersection.y - endPointTwo.y) + intersection.x * (endPointTwo.y - endPointOne.y) + endPointTwo.x * (endPointOne.y - intersection.y))<= 0) if(Math.round(area) <= 0) { isCollenear = true; } // Slope Approach double numeratorOne = Math.round(intersection.y) - Math.round(endPointOne.y); double denominatorOne = Math.round(intersection.x) - Math.round(endPointOne.x); double numeratorTwo = Math.round(endPointTwo.y) - Math.round(intersection.y); double denominatorTwo = Math.round(endPointTwo.x) - Math.round(intersection.x); double result1 = Math.round(numeratorOne/denominatorOne); double result2 = Math.round(numeratorTwo/denominatorTwo); if(result1== 0 && result2==0){ isCollenear = true; } return isCollenear; }
Wenn ich in beiden Fällen Koordinaten als Eingabe verwende, erhalte ich selbst für ähnlich kollineare Fälle Werte für die Fläche, wie 4 usw. Für Fälle, die eindeutig nicht kollinear sind, erhalte ich den gleichen Steigungswert.
Gibt es eine Möglichkeit, mithilfe eines beliebigen Konstrukts einen expliziten Melder für Kollinearität zu erhalten? Mache ich das richtig? Die Koordinatenbeispielwerte, die ich an die Methode übergebe, sind Coefficient endPointOne = -26.66666666666686, 32.38095238095238 ....usw.
Ich freue mich auf eure Meinungen.
Danke und Grüße
Ich überprüfe nicht die Vorwahl, sondern ob die drei Punkte kollinear sind. Dann lautet die Formel:
Punkte (x1,y1), (x2,y2), (x3,y3).
Es sollte genau dann kollinear sein, wenn
(y2-y1) (y3-y2) ------- = ------- (x2-x1) (x3-x2)
So sollte der Code sein,
if(result1==result2){ isCollenear = true; }
Das obige ist der detaillierte Inhalt vonSo bestimmen Sie, ob drei Koordinaten kollinear sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!