Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Länge zwischen zwei Punkten! (https://www.delphipraxis.net/106403-laenge-zwischen-zwei-punkten.html)

Anjamaus89 10. Jan 2008 11:03


Länge zwischen zwei Punkten!
 
hey na?

Ich versuche ein Programm zu erstellen, wo mir das Programm die Länge zwischen 2 bestimmten Punkten sagen soll.
Es ist ein Punkt festgelegt (Lösung) und einer soll vom Benutzer eingegeben werden.
Der Abstand zwischen diesen Punkten soll dann ausgegeben werden.
Ist das irgendwie programmierbar? :)

Danke schon mal für eure Hilfe

DerDan 10. Jan 2008 11:09

Re: Länge zwischen zwei Punkten!
 
Hallo,


wie weit bist du denn schon? was ist schon fertig und wo haperts?

Anjamaus89 10. Jan 2008 11:12

Re: Länge zwischen zwei Punkten!
 
Naja wir müssen jetzt so nen Projekt machen. Da sollen wir halt die Luftlinie zwischen zwei zb Städten dann ausgeben. Da ich aber Anfänger bin weiß ich jetzt nich wirklich wie ich das machen kann bzw. wie ich anfangen könnte. Ich mein die Weltkarte hab ich schon :oops:

lg Anja

Corpsman 10. Jan 2008 11:20

Re: Länge zwischen zwei Punkten!
 
Also das Programmieren ist total simple

Was du machen must ist die Sogenannte Norm berechnen. Also den Abstand zwischen 2 Punkten.

2 Punkte sind gegeben durch x1,y1 und x2,y2

Mittels Pytagoras

Länge = Wurzel aus ( (x1-x2) im Quadrat + (y1-y2) im Quadrat )

und fertig.

Das ganze Programmieren müstest du selbst können.

DeddyH 10. Jan 2008 11:21

Re: Länge zwischen zwei Punkten!
 
Ich werfe mal den guten alten Pythagoras in den Raum, der sollte Dir weiterhelfen.

[edit] Etwas zu spät :? [/edit]

Aurelius 10. Jan 2008 11:25

Re: Länge zwischen zwei Punkten!
 
das ganze könnte man mit dem Satz des Pythagoras machen. Die Punkta auf der Weltkarte hast du ja, du must nur noch den Maßstab in die Berechnung einfügen.

Nehmen wir mal an du hast die Punkte (0;0) und (10;20).

Dann erhälst du bei einem Maßstab von 1 Pixel = 1m:

a = 0 + 10
b = 0 + 20
c²= a² + b² = 100 + 400 = 500
c = sqrt(500) --> Luftlinie

//edit: Grummel, da war wer schneller...^^

Anjamaus89 10. Jan 2008 11:28

Re: Länge zwischen zwei Punkten!
 
hey ich danke euch!
Ich denk mal schon das ich das hinbekomm, und wenn nich kann ich ja immer nochmal fragen! :wink:

bis später dann! :-D

Anjamaus89 10. Jan 2008 11:34

Re: Länge zwischen zwei Punkten!
 
ach noch gleich ne andere Frage. Wie funktionierten denn das, dass wenn wir auf einen bestimmten Punkt in der Karte klicken, dass dann genau da ein anderer Punkt erscheint?

Danke :wink:

Aurelius 10. Jan 2008 11:38

Re: Länge zwischen zwei Punkten!
 
Bim OnClick auf die Karte die Koord. abfragen und dann mit den Canvas-Funktionen färben (hoffentlich ist das richtig :oops: )

snow 10. Jan 2008 21:35

Re: Länge zwischen zwei Punkten!
 
Fast richtig.

Die Koordinaten sind dann auf den bildschirm bezogen. Nicht auf das Image/Paintbox/irgendwas.

Mit der
function ScreentoClient(punkt : Tpoint): Tpoint;

rechnest du die Bildschirmkoordinate in eine Paintbox-/Image-koordinate um.

Gruß snow

rawsoul 10. Jan 2008 21:40

Re: Länge zwischen zwei Punkten!
 
Die Karte wird wohl mit einem TImage oder ähnlichem eingebunden werden. Bei dem OnMouseDown Event werden die X- und Y-Koordinaten im Bezug auf die Kompo übergeben, da muss man nicht erst mit ScreenToClient rumfummeln.

snow 10. Jan 2008 21:55

Re: Länge zwischen zwei Punkten!
 
Aber wird mouseDown nich immer ausgefürt, wenn der mausbutton heruntergedrückt ist?

Gruß snow

rawsoul 10. Jan 2008 22:31

Re: Länge zwischen zwei Punkten!
 
Natürlich, dann kann man dort doch die Koordinaten in eine Variable setzen und diese abrufen, wenn sie benötigt werden.

generic 11. Jan 2008 08:20

Re: Länge zwischen zwei Punkten!
 
Es macht einen grossen Unterschied ob du die Entfernung zwischen zwei Punkten oder zwischen zwei Städten wissen willst.
Bei letzteren wird es komplizierter, da die Erde eine unregelmässige Kugel ist.
Pythagoras hilft da dann nicht mehr wirklich weiter, weil es schwierig wird die Erdkrümmung mit einzurechnen.

Für diese Probleme gibt es aber fertige Bibliotheken die du nutzen kannst.

em-sigma 11. Jan 2008 09:14

Re: Länge zwischen zwei Punkten!
 
Das Stichwort lautet "sphärische Trigonometrie"

Schau mal hier

http://www.kompf.de/gps/distcalc.html

da findest du 'ne einfache Berechnung für die Kugeloberfläche.

stahli 11. Jan 2008 09:32

Re: Länge zwischen zwei Punkten!
 
Vorschlag:
Man könnte auch 2 Shapes auf die Karte platzieren und per Drag&Drop verschiebbar gestalten.
Beim Verschieben eines Shapes wird die Entfernung aktualisiert ausgegeben...

stahli

snow 11. Jan 2008 11:53

Re: Länge zwischen zwei Punkten!
 
man kann aber davon ausgehen,dass die erde eine Kugel ist. Die abweichung beträgt glaub ich 50/40000.

wo liegt dann da das problem? Dei entfernung zwischen 2 Breiten/Längengraden beträgt glaub ich eine Seemeile(wir hatten damals nen komischen Erdkundelehrer, da ist nicht viel hängen geblieben außer der Sandwitchbauweise eines Vulkans :lol: )

Wenn du also die entfernung in Grad/Minute/Sekunde weisst, kannste des in km umrechnen.

Gruß snow

em-sigma 11. Jan 2008 12:43

Re: Länge zwischen zwei Punkten!
 
@snow: Da hast du in Erdkunde wirklich nicht aufgepaßt. Eine Seemeile entspricht einer Bogenminute des Äquators (eigentlich eines Längengrads). Die Berechnung mittels der Weltkoordinaten funtioniert so, wie du es vorgeschlagen hast, natürlich nicht, denn an den Polen ist der Abstand der Längengrade = 0.
Wenn du dir die Koordinatenlinien einer Europakarte ansiehst, kannst du erkennen, dass die Längengrade nach Norden hin zusammenlaufen.

snow 11. Jan 2008 13:30

Re: Länge zwischen zwei Punkten!
 
es sei denn man verwendet eine gestrechte karte....

like this.

http://www.kapstadt.org/images/image...rldmap.gif.gif

Gruß snow

himitsu 11. Jan 2008 13:41

Re: Länge zwischen zwei Punkten!
 
Bild bitte in Anhang ... mein Monitor ist zu klein ;(

Zitat:

Zitat von snow
es sei denn man verwendet eine gestrechte karte....

kein Problem ... dann rechnet man einfach noch die Abweichungen der Karte mit ein :zwinker:

em-sigma 11. Jan 2008 13:57

Re: Länge zwischen zwei Punkten!
 
Ja. Nennt sich quadratische (manchmal auch rechteckige) Plattkarte.
Hat aber den Nachteil, dass sie im allgemeinen nicht längentreu ist, was ja auch logisch ist, denn die Projektion einer Kugel auf eine Ebene ergibt immer Verzerrungen. In diesem Fall stimmen die Längen am Äquator und in Nord-Süd-Richtung. In Ost-West-Richtung nimmt die Ungenauigkeit jedoch zu den Polen hin zu.
(Ihr seid echt naiv)

snow 11. Jan 2008 16:23

Re: Länge zwischen zwei Punkten!
 
wie wärs mit.

wenn a die entfernung auf der karte ist, dann ist die reale entfernung real

Zitat:

real = arcsin(a/2/r)*2/360 * 2r*pi
r ist der erdradius und nach meinem schlauen buch sollte der bei ungefär 6,371 * 10^3 liegen = 6371km

gruß snow

vllt stimmt meine formel ja sogar xD!

Edit:// wenn ich meinen Physikkenntnissen trauen darf, dann müsste man bei einer ganz genauen rechnung auch noch die allgemeine Relativitätstheorie mit einbenziehen. Demnach ist die gemessene strecke in wirklichkeit durch den verkrümmten raum noch mal ein stückchen länger. Allerdings sollte das auf der Erde kaum auswirklungen haben.

em-sigma 13. Jan 2008 15:36

Re: Länge zwischen zwei Punkten!
 
Offensichtlich auch falsch denn

arcsin(a/2/r)=arcsin(a/d)
(d=Durchmesser=2*6371km=12742km)

gilt nicht für Entfernungen auf der Kugeloberfläche. Die maximale Entfernung a kann nämlich bis zu ca. 20000km betragen. Damit würde a/d größer als 1 (eins) werden und der Arcsin ist für Werte größer als eins nicht definiert.

Offensichtlich, oder?

taaktaak 13. Jan 2008 17:43

Re: Länge zwischen zwei Punkten!
 
Moin, Moin,
ich verfolge die Diskussion mit einem gewissen Schmunzeln. Ich kann mir nicht vorstellen das die "Maus" dem Ganzen als Anfängerin noch einen praktischen Nutzen abgewinnen kann. Bezeichnenderweise hört man ja auch kein "Mäusegepiepse" mehr...
Gruß Ralph

Larsi 13. Jan 2008 18:55

Re: Länge zwischen zwei Punkten!
 
Herzlich Willkommen in der Dp :dp: :)

(Falls es noch keiner getan hat :) )

snow 13. Jan 2008 19:02

Re: Länge zwischen zwei Punkten!
 
Zitat:

Offensichtlich auch falsch denn

arcsin(a/2/r)=arcsin(a/d)
(d=Durchmesser=2*6371km=12742km)

gilt nicht für Entfernungen auf der Kugeloberfläche. Die maximale Entfernung a kann nämlich bis zu ca. 20000km betragen. Damit würde a/d größer als 1 (eins) werden und der Arcsin ist für Werte größer als eins nicht definiert.

Offensichtlich, oder?
ja a ist die direkte entfernung der punkte in einem 3D-Koordinatensystem. Solange man anstadt der Erdkoordinaten GPS-Koordinaten nimmt ist alles in ordnung. Dann ist a eine strecke die im extremfall durch den erdmittelpunkt geht. in diesem fall ist a maximal 2r groß und somit ist maximal arcsin(1) drin was einem Winkel von 180 entspricht und die kugelentfernung entspricht dann 1/2Umfang.

Die erdkoordinaten sind halt nicht die dollsten :lol: . Es gibt bestimmt eine umwandlungsfunction für erdkoord nach GPS-kord.

gruß snow

Anjamaus89 16. Jan 2008 09:12

Re: Länge zwischen zwei Punkten!
 
Naja das kein Mäusegepipser kam lag daran, dass mein rechner daheim sehr langsam ist und ich momentan auch anderen Stress in der Schule hab wegen Seminarfach(falls jemand damit was anfangen kann). Aber ich denk mal nich das wir das so kompliziert machen müssen von wegen Erdkrümmung und so nen gackel?!
Also meine Karte ist http://www.primap.com/Karten-Weltkarte-2000.jpg[/img]
Danke schön!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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