Hallo Zusammen,
ich ueberlege gerade etwas rum...
Aufgabe:
Wie kann ich ermitteln ob A oder B naeher am Ziel ist, bei einer Strecke unbestimmter Form?
Als erstes fiel mir dazu ein, eine Art A* Wegfindung zu nutzen.
Kennt jemand von Euch vlt. eine weitere/einfachere Moeglichkeiten dies zu loesen?
Gruss, heinz
Entfernungen ermitteln... [erledigt]
Entfernungen ermitteln... [erledigt]
Zuletzt geändert von heinz am 08.10.2019 20:16:00, insgesamt 1-mal geändert.
Re: Entfernungen ermitteln...
Hab vor einiger Zeit da mal was ähnliches gebastelt: Variables Gitter aus Knoten/Kanten drübergelegt, anhand der Bildhelligkeit die Knoten entfernen, die nicht auf dem "Weg" sind und dann die üblichen Verdächtigen (A*, Bellman-Ford, Dijkstra, Floyd-Warshall) drauflosgelassen. A* war relativ simpel und hat ausreichend gut funktioniert.
-
- Beiträge: 70
- Registriert: 25.11.2017 15:57:49
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Entfernungen ermitteln...
Hey,
wenn es nicht so mega genau sein muss, kann man das wohl ungefähr so machen, wie im Code. Allerdings habe ich jetzt auch noch nicht lange drüber nachgedacht, bin ein bisschen verkatert und da gibt es mindestens einen Fehler … Außerdem geht das alles viel besser und genauer, wenn man mehr Mathematik reinsteckt.
wenn es nicht so mega genau sein muss, kann man das wohl ungefähr so machen, wie im Code. Allerdings habe ich jetzt auch noch nicht lange drüber nachgedacht, bin ein bisschen verkatert und da gibt es mindestens einen Fehler … Außerdem geht das alles viel besser und genauer, wenn man mehr Mathematik reinsteckt.
Code: Alles auswählen
#!/usr/bin/python3
import numpy as np
import math as m
epsilon = 0.001
#Koordinatensystem
x = np.array(np.arange(-2,2,0.01))
y = np.array(np.arange(-2,2,0.01))
#Abstand
def dist(x1,y1,x2,y2):
d = m.sqrt((y2-y1)**2+(x2-x1)**2)
return d
#BeispielWeg
def poly(x):
return (x - 3)*(x - 2)*(x - 1)*(x)*(x + 1)*(x + 2)
(x + 3)
path = []
for xx in x:
path.append([xx,poly(xx)])
#Punkte, Ziel in Indexschreibweise
a = 5
b = 44
z = 22 #ziel
#dx array
what=0
ds = []
for pp in path:
if what == 0:
(x1,y1) = (pp[0],pp[1])
what = 1
else:
d = dist(x1,y1,pp[0],pp[1])
(x1,y1) = (pp[0],pp[1])
ds.append(d)
#Abstand az
if a <= z :
az = sum(ds[a:z])
else:
az = sum(ds[z:a])
#Abstand bz
if b <= z :
bz = sum(ds[b:z])
else:
bz = sum(ds[z:b])
print(az,bz)
-
- Beiträge: 70
- Registriert: 25.11.2017 15:57:49
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Entfernungen ermitteln...
Für
Sollte das BIld wohl so aussehen:
https://imgur.com/j3Dz0Ny
Code: Alles auswählen
a = 5
b = 389
z = 190 #ziel
https://imgur.com/j3Dz0Ny
Re: Entfernungen ermitteln...
Hallo nochmal,
vielen Dank an Euch fuer Eure Antworten.
Sorry, weil ich so lange nicht geantwortet habe. (War gesundheitlich nicht ganz auf dem Damm...)
Da es fuer dieses Problem anscheinend keine einfache "mathematische Wunderformel" zu geben scheint, habe nun begonnen es mit A* zu loesen.
Danke nochmals...
Gruss, heinz
vielen Dank an Euch fuer Eure Antworten.
Sorry, weil ich so lange nicht geantwortet habe. (War gesundheitlich nicht ganz auf dem Damm...)
Da es fuer dieses Problem anscheinend keine einfache "mathematische Wunderformel" zu geben scheint, habe nun begonnen es mit A* zu loesen.
Danke nochmals...
Gruss, heinz