Ich habe zwei Punkte (x1, y1) und (x2, y2). Ich möchte wissen, ob die Punkte innerhalb von 5 Metern voneinander sind.
messen Sie die Quadratdistanz von einem Punkt zum anderen:
%Vor%Dabei ist d die Entfernung, (x1, y1) sind die Koordinaten des Basispunkts und (x2, y2) die Koordinaten des zu überprüfenden Punktes.
oder wenn Sie bevorzugen:
%Vor% Es wurde bemerkt, dass der bevorzugte Pow aus Gründen der Geschwindigkeit überhaupt nicht anruft, und der zweite, wahrscheinlich langsamer, ruft auch nicht Math.Sqrt
auf, immer aus Leistungsgründen. Vielleicht sind solche Optimierungen in Ihrem Fall verfrüht, aber sie sind nützlich, wenn dieser Code oft ausgeführt werden muss.
Natürlich sprechen Sie in Metern und ich vermute, dass Punktkoordinaten auch in Metern ausgedrückt werden.
Wenn Sie System.Windows.Point
Datentyp um einen Punkt darzustellen, können Sie
Update 2017-01-08:
Point.Subtract
ist System.Windows. Vektor und es hat auch die Eigenschaft LengthSquared
, um eine sqrt
Berechnung zu speichern, wenn Sie nur die Distanz vergleichen müssen. WindowsBase
assembly erforderlich sein
Beispiel mit LengthSquared
und Operatoren
Hier sind meine 2 Cent:
%Vor%x1, y1 ist die erste Koordinate und x2, y2 die zweite. Die letzte Zeile ist die Quadratwurzel, die auf 3 Dezimalstellen gerundet ist.
So etwas in c # würde wahrscheinlich den Job machen. Stelle sicher, dass du konsistente Einheiten passierst (Wenn ein Punkt in Metern ist, vergewissere dich, dass der zweite auch in Metern ist)
%Vor%Genannt wie folgt:
%Vor%Tags und Links c#