Angenommen, ich habe ein Liniensegment von (x1, y1) nach (x2, y2). Wie berechne ich den Normalenvektor senkrecht zur Linie?
Ich kann viele Dinge finden, die dies für Flugzeuge in 3D tun, aber keine 2D-Dinge.
Bitte schonen Sie die Mathematik (Links zu Beispielen, Diagrammen oder Algorithmen sind willkommen), ich bin mehr Programmierer als Mathematiker;)
Antworten:
Wenn wir dx = x2-x1 und dy = y2-y1 definieren, sind die Normalen (-dy, dx) und (dy, -dx).
Beachten Sie, dass keine Division erforderlich ist und Sie daher nicht riskieren, durch Null zu dividieren.
quelle
(x', y') = (-y, x)
und(x', y') = (y, -x)
scheint richtig zu sein, aber warum sollte mandx
unddy
hier verwenden. Darüber hinaus, basierend auf Steigungen,m1 * m2 = -1
für rechtwinklige Linien, alsody' = dx' * (-dx/dy)
unddx' = dy' * (-dy/dx)
wie kommt es in Ihrer Gleichungnormal.x = x' = -dy
?Eine andere Möglichkeit besteht darin, den Einheitsvektor für eine bestimmte Richtung zu berechnen und dann eine Drehung um 90 Grad gegen den Uhrzeigersinn anzuwenden, um den Normalenvektor zu erhalten.
Die Matrixdarstellung der allgemeinen 2D-Transformation sieht folgendermaßen aus:
Dabei sind (x, y) die Komponenten des ursprünglichen Vektors und (x ', y') die transformierten Komponenten.
Wenn t = 90 Grad, dann ist cos (90) = 0 und sin (90) = 1. Einsetzen und Multiplizieren ergibt:
Gleiches Ergebnis wie zuvor angegeben, jedoch mit etwas mehr Erklärung, woher es kommt.
quelle
Diese Frage wurde vor langer Zeit gestellt, aber ich habe einen alternativen Weg gefunden, sie zu beantworten. Also habe ich beschlossen, es hier zu teilen.
Erstens muss man wissen: Wenn zwei Vektoren senkrecht sind, ist ihr Punktprodukt gleich Null.
Der Normalenvektor
(x',y')
ist senkrecht zu der Verbindungslinie(x1,y1)
und(x2,y2)
. Diese Linie hat Richtung(x2-x1,y2-y1)
oder(dx,dy)
.So,
Es gibt viele Paare (x ', y'), die die obige Gleichung erfüllen. Aber das beste Paar, das IMMER zufrieden stellt, ist entweder
(dy,-dx)
oder(-dy,dx)
quelle
wenn senkrecht zwei Linien:
dann
b ist etwas, wenn Sie es von einem von Ihnen definierten Punkt aus übergeben möchten
quelle