Entfernungen ermitteln... [erledigt]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Entfernungen ermitteln... [erledigt]

Beitrag von heinz » 18.09.2019 14:12:42

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?
2299

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
Zuletzt geändert von heinz am 08.10.2019 20:16:00, insgesamt 1-mal geändert.

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Entfernungen ermitteln...

Beitrag von eggy » 18.09.2019 16:28:20

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.

Frink
Beiträge: 70
Registriert: 25.11.2017 15:57:49
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Entfernungen ermitteln...

Beitrag von Frink » 03.10.2019 12:25:40

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.

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)

Frink
Beiträge: 70
Registriert: 25.11.2017 15:57:49
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Entfernungen ermitteln...

Beitrag von Frink » 03.10.2019 12:41:46

Für

Code: Alles auswählen

a = 5
b = 389

z = 190 #ziel 
Sollte das BIld wohl so aussehen:

https://imgur.com/j3Dz0Ny

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Entfernungen ermitteln...

Beitrag von heinz » 08.10.2019 20:14:18

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

Antworten