Ich möchte einen Code kennen, der mir tatsächlich sagen kann, ob 3 Punkte in einem 2D-Raum auf der gleichen Linie liegen oder nicht. Ein Pseudocode ist auch ausreichend, aber Python ist besser.
Antworten
Zu viele Anzeigen?Dies ist C++, aber man kann es an Python anpassen:
bool collinear(int x1, int y1, int x2, int y2, int x3, int y3) {
return (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
}
Im Wesentlichen prüfen wir, ob die Steigungen zwischen Punkt 1 und Punkt 2 sowie Punkt 1 und Punkt 3 übereinstimmen. Steigung ist die Änderung von y geteilt durch die Änderung von x, also haben wir:
y1 - y2 y1 - y3
------- = --------
x1 - x2 x1 - x3
Kreuzmultiplikation ergibt (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2)
;
Beachten Sie, dass Sie bei der Verwendung von Doubles gegen ein Epsilon prüfen können:
bool collinear(double x1, double y1, double x2, double y2, double x3, double y3) {
return fabs((y1 - y2) * (x1 - x3) - (y1 - y3) * (x1 - x2)) <= 1e-9;
}
Lesen Sie este und verwenden Sie sie, um die Gleichung einer Geraden durch die ersten beiden Punkte zu finden. Befolgen Sie die Anweisungen, um Folgendes zu finden m
y b
. Berechnen Sie dann für Ihren dritten Punkt mx + b - y
. Ist das Ergebnis gleich Null, liegt der dritte Punkt auf der gleichen Linie wie die ersten beiden.
0 Stimmen
Wie ist Ihre Linie definiert? Funktion in einer 2d-Ebene?
0 Stimmen
Was genau wird Ihnen gegeben? Drei Punkte? oder drei Punkte und eine Linie?