38 Stimmen

Prüfen, ob 3 Punkte auf der gleichen Linie liegen

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.

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?

82voto

florin Punkte 13628

Du kannst überprüfen, ob der Flächeninhalt des ABC-Dreiecks 0 ist:

[ Ax * (By - Cy) + Bx * (Cy - Ay) + Cx * (Ay - By) ] / 2

Natürlich brauchen Sie nicht durch 2 zu teilen.

65voto

dcp Punkte 52822

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;
}

0voto

Dimitris Leventeas Punkte 1582

y - y0 = a(x-x0) (1) während a = (y1 - y0)/(x1 - x0) y A(x0, y0) B(x1, y1) C(x2, y2) . Sehen Sie, ob C statisfies (1). Sie ersetzen einfach die entsprechenden Werte.

Einzelheiten

0voto

Douglas Punkte 34870

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.

-1voto

Rob Vermeulen Punkte 1856

Regel 1: In jedem linearen 2D-Raum liegen zwei Punkte immer auf der gleichen Linie.

Man nehme 2 Punkte und stelle eine Gleichung auf, die eine Linie durch diese Punkte darstellt. Prüfe dann, ob der dritte Punkt auch auf dieser Linie liegt.

Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X