2017-11-16 9 views
-5

Ich muss den Abstand zwischen zwei Punkten (p1 = (x1, y1) und p2 = (x2, y2)) zurückgeben, aber den negativen Abstand zurückgeben, wenn die Werte von p2 kleiner als p1 sind.Abstand/Abstand zwischen zwei Punkten

Damit dieses Beispiel gilt: https://i.imgur.com/ZbN8CkG.png

√ ((x1-x2) ² + (Y1-Y2) ²) immer einen positiven Wert zurück, als Abstand nicht negativ sein kann. Aber was ich brauche, ist der Verschiebung ähnlicher.

Kann jemand helfen?

+2

Ich stimme zu, diese Frage als off-topic zu schließen, weil es um Mathe geht –

+0

Also, nur die Entfernung mit dieser Formel, und dann negieren sie "wenn p2 Werte kleiner als p1 sind.", Was auch immer das bedeutet Sie. – Blorgbeard

+0

Was meinen Sie mit "wenn die Werte von p2 kleiner als die von s1 sind?" Beide Werte? Nur einer von ihnen? Wenn dies etwas ist, das Sie getrennt von der Entfernungsberechnung überprüfen können (für die Sie übrigens 'Math.hypot' verwenden sollten), dann tun Sie dies. –

Antwort

0

Es klingt wie Sie wirklich einen Vektor wollen. Es hat Magnitude und Richtung. Die Größe ist der Abstand zwischen den beiden Punkten. Die Richtung wird durch Zeichnen des Vektors vom Startpunkt bis zum Endpunkt bestimmt. Die Wahl ist willkürlich.

Ein Vektor von (0,0) bis (5,0) hat die gleiche Länge wie einer von (5,0) bis (0,0) gezeichnet: beide sind Länge 5. Aber eins zeigt in positiver x-Richtung ; die anderen Punkte in der negativen x-Richtung. Die Vektoridee ist allgemeiner.

In zweidimensionalen rechtwinkligen Koordinaten haben Sie die Punkte p1 = (p1x, p1y) und p2 = (p2x, p2y).

Der Vektor von P1 zu P2 ist:

p = (p2x-p1x)*i + (p2y-p1y)*j 

wobei i = x-Einheit Vektor und j = y-Vektor-Einheit.

Die Größe von p ist

pmag = sqrt((p2x-p1x)^2 + (p2y-p1y)^2) 

der Einheitsvektor von P1 bis P2 kann durch Teilen des Vektors p durch seine Größe zu haben ist:

wie p
p(unit) = (p2x-p1x)*i/pmag + (p2y-p1y)*j/pmag 

punit Punkte in der gleichen Richtung , aber es hat Magnitude 1 (daher der Name "Einheitsvektor").

0

Wenn es nur negativ sein muss, wenn der erste Punkt einen größeren x-Wert hat, dann könnten Sie einfach überprüfen, ob x1 größer als x2 ist und wenn ja, multiplizieren Sie Ihr Ergebnis mit -1. Das ist, wenn ich etwas nicht vermisse

Verwandte Themen