2012-06-28 8 views
5

Ich habe zwei Punkte am Ende einer Linie.
Ich muss die Endkoordinaten einer Übersetzung dieser Linie erhalten.
Die Übersetzung wird eine parallele Linie sein, die eine Entfernung d von der ursprünglichen Linie ist.
hier ist ein Bild von dem, was ich brauche:Funktion zum Übersetzen der Endkoordinaten einer Linie

enter image description here

Also brauche ich eine Funktion, die ich diese beiden Punkte und die Distanz und erhalten die beiden neuen Koordinaten in kehrt passieren kann.
Ich habe für eine Weile auf dieses Problem festgefahren. Jede Hilfe wird geschätzt!
Vielen Dank!

+0

In welche Richtung wird die Linie projiziert, wenn "Abstand" positiv ist? Negativ? – justderb

+0

Diese Übersetzung ist mehrdeutig ohne eine andere Richtung. Es gibt eine unendliche Anzahl von Linien, die Abstand "d" von und parallel zur Linie entfernt sind. – cheeken

+2

Ich möchte, dass es ein Liniensegment von gleicher Länge und parallel zum Original ist. und Wenn Sie eine Linie zwischen dem alten und dem neuen Punkt zeichnen wollten, sollte es eine senkrechte Linie mit der ursprünglichen Linie bilden. Ich bin mir nicht sicher, ob das klar ist. Ich möchte die Linie aber im Bild sehen. –

Antwort

3

Die neuen Koordinaten werden dem ursprünglichen Vektor Punkt der resultierende Vektor der

Abstand d multipliziert mit normalisierten Vektor von welcher Richtung sie sich bewegt, hinzugefügt werden.

EDIT:

die beiden Punkte der Linie gegeben, müssen Sie die normale des Vektors zu berechnen, diese Punkte verbindet. Information on that is here..

Normalisieren dieser Vektor, multipliziert mit d, zu jedem Punkt hinzuzufügen.

+0

Nachdem ich ein bisschen damit gespielt habe, habe ich es herausgefunden! Ich danke dir sehr. –

2

Berechnen Sie den Vektor (x2-x1, y2-y1). Dies ist ein Vektor in der Richtung Ihrer Linie. Ein Normalvektor wird dann durch

gegeben
(-(y2-y1),-(x2-x1)) = (y1-y2,x1-x2). 

Dividieren dieser Vektor durch seine Größe den Einheitsvektor in Richtung bekommen Sie

wollen
A = (y1-y2,x1-x2)/|(y1-y2,x1-x2)| 

Jetzt Ihr Abstand d setzten Punkt gegeben wird durch

gegeben werden
NewPoint = OldPoint + d * A