![]() |
Positionen (x ,y Achse, float) nach Distanz sortieren
Hallo,
folgendes Vorhaben: Ich möchte etwa 1000~ Positionen welche sich in einem simplen Array vom Typ TPositions ->
Delphi-Quellcode:
befinden nach Distanz sortieren. Meine Überlegung war nun jede Position in dem Array zu durchlaufen und mittels abs die Distanz zu ermitteln. Meine simple Funktion hierzu:
TPositions = packed record
x, y: single; end;
Delphi-Quellcode:
Wie sortiere ich die Positionen nun möglichst schnell im Array nach der Distanz? Einstiegspunkt soll dabei immer die Distanz zum ersten Eintrag im Array sein. Mir fällt da nur ein die Liste mehrmals zu durchlaufen um von jeder Position die Distanz zu ermitteln und dann irgendwie zu ordnen.
function GetDistance(x1, y1, x2, y2: single): double;
begin result := abs(x2 - x1) + abs(y2 - y1); end; Geht das nicht irgendwie bequemer? Gruß |
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Wie der Betreff schon sagt, einfach per z.B. Quicksort sortieren ...:?:
|
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Die Entfernung sollte man so berechnen (meint Google :wink:): a = Wurzel((x2-x1)²+(y2-y1)²).
Nach Möglichkeit würde ich den Record um "distance" erweitern, alle Entfernungen einmal berechnen lassen und dann das Array nach "distance" sortieren. |
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Zitat:
Den korrekten Abstand zweier Punkte kann man aber auch mit
Delphi-Quellcode:
bekommen.
uses Math;
a := Hypot(y2-y1, x2-x1); |
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Ich bin schon ein paar Jahre raus aus der Schule und hatte mir nur gedacht, dass
0/0 : 0/20 und 0/0 : 10/10 unterschiedliche Entfernungen ergeben müsste (was in der einfachen Variante ja nicht der Fall ist). Daher habe ich mal gesucht... |
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Zitat:
|
AW: Positionen (x ,y Achse, float) nach Distanz sortieren
Ja, das leuchtet selbst mir ein :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz