Other languages > GLBasic - de

Entfernungtabelle erstellen

(1/2) > >>

Worebu:
Moin,
ich möchte mal eine fiktive Entfernungstabelle erstellen und die Tabelle mit Random zahlen füllen.
Was eigentlich kein Problem ist, aber wie bekommt man das hin das die Entfernungen stimmen?

Also von A nach A oder B nach B usw. ist logischerweise immer null, aber wenn ich die Tabelle komplett fülle
habe ich Werte die nicht stimmen. A nach Z  hat einen anderen Wert wie Z nach A.

Jemand eine Idee?

Schönes WE.


So ungefähr.

    A B C

A  0 5 9
B  5 0 7
C  9 7 0



Schranz0r:
Moin,

was hast du damit vor?
Willst du ein Pathfinding schreiben?

Komm komm nicht ganz hinterher, was es machen soll, dein Aufbau...

Worebu:
Hi,
das ist erstmal nur ein Test. Das soll eine Entfernungstabelle von fiktiven Orten sein,
nur das die Entfernungen  Random sein sollen. Ich  bekomme das mit dem füllen nur nicht hin.


Ein Feld das so gefüllt ist:


http://www.auslandversicherungen.de/entfernungstabelle.html



Hast Du eine Idee?

Worebu

S. P. Gardebiter:
Ich würde dir zu einer geometrischen Lösung raten, da sie einfach nachvollziehbar ist.
Zunächst solltest du zufällige x und y Koordinaten zu deinen Punkten generieren.

Dann kannst du die Distanz zwischen zwei Punkten wie folgt ausrechnen:

d = √((x1 - x2)² + (y1 - y2)²)

Es handelt sich hierbei um die Pythogoras Formel (a² + b² = c²):
Die Länge der Seite a ist hierbei die Differenz zwischen den beiden x-Werten deiner Punkte und die Länge der Seite b ist die Differenz zwischen den y-Werten.
Kurz gesagt, bei dir ist a = x1 - x2 und b = y1 - y2.
Zum Schluss kannst du die Punkte quadrieren, addieren und danach die Wurzel ziehen, dann hast du deinen Wert für c, was bei dir die Distanz zwischen den beiden Punkten ist.

Die Logik dahinter: Du konstruierst ein Dreieck anhand deiner beiden Punkte und kannst so die Distanz über die Ermittlung der dritten, längsten Seite deines Dreiecks ausrechnen.

Wenn du jetzt deine Schleife programmierst, kannst du noch folgende Optimierungen vornehmen:

* Wenn deine beiden Punkte gleich sind (beide Schleifenvariablen haben den selben Wert), dann ist die Distanz immer 0, das ist die Diagonale in deiner Tabelle.
* Du kannst die beiden Schleifenvariablen als Indizes vertauschen und schauen ob in deiner Tabelle bereits ein Wert vorhanden ist, wenn ja, dann brauchst du die Distanz nicht neu ausrechnen, sondern nur innerhalb der Tabelle kopieren (von A nach B ist die selbe Distanz wie von B nach A).
Ich hoffe ich konnte dir helfen.

Liebe Grüße.

Worebu:
Hmm,
da ich kein abgeschlossenes Mathe Studium habe und nur so ein Hobbyprogrammierer bin hast Du mir leider nicht helfen können.
Aber ich danke Dir dafür das Du dir Gedanken über mein Problem gemacht hast.

Worebu

Navigation

[0] Message Index

[#] Next page

Go to full version