Länge einer Strecke zwischen 2 Punkten berechnen.

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
NathanielBlack
Beiträge: 63
Registriert: 25.12.2009 18:48

Länge einer Strecke zwischen 2 Punkten berechnen.

Beitrag von NathanielBlack »

Diese Funktion soll euch helfen, wenn ihr den Abstand zwischen zwei Punkten (x,y) berechnen wollt. Jeder Punkt braucht eine X und eine Y Koordinate.
Doch schaut es euch einfach an.

Code: Alles auswählen

Procedure.d Entfernung(x1,y1,x2,y2)
   Protected entfernung.d
   a.d = x1-x2
   b.d = y1-y2
   entfernung.d = Sqr(a*a+b*b)
   ProcedureReturn entfernung
EndProcedure
Und hier noch ein Beispiel:

Code: Alles auswählen

Debug Entfernung(4,12,16,3)
Ich hoffe das kann euch helfen, falls benötigt:)

Mit freundlichen Grüßen,
NathanielBlack
Zuletzt geändert von NathanielBlack am 06.08.2010 16:26, insgesamt 1-mal geändert.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Re: Länge einer Strecke zwischen 2 Punkten berechnen.

Beitrag von Jilocasin »

Das steht bereits recht lange in der PB-Hilfe, soweit ich weiß. Auch wenn der Code dort wegen der Potenzschreibweise nicht 1:1 in PB funktioniert. :)

Bild

Wenn schon, dann aber bitte:

Code: Alles auswählen

Procedure.d Entfernung(x1.d, y1.d, x2.d, y2.d)
  ProcedureReturn Sqr((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2))
EndProcedure
Oder als Macro (wesentlich schneller als Procedureaufruf):

Code: Alles auswählen

Macro Entfernung(x1, y1, x2, y2)
  Sqr((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2))
EndMacro
Ist bei der Verwendung von Doubles aber nur auf 64bit Systemen schneller. Auf 32bit sollte man bei dieser gekürzten Schreibweise für bessere Performance entweder Floats nutzen, oder bei Doubles den Zwischenweg über deine zwei Variablen a und b nehmen. Das ist dann sogar tatsächlich schneller. :shock:
Zuletzt geändert von Jilocasin am 06.08.2010 16:06, insgesamt 1-mal geändert.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Länge einer Strecke zwischen 2 Punkten berechnen.

Beitrag von STARGÅTE »

*Kopfkratz* Bild

PureBasicHilfe -> Zusätzliche Informationen -> Mathematische Formeln -> Abstand zwischen zwei Punkten

Wenn du also schon eine Fertige prozedur anbietest, benutze bitte auch Protected für deine Variablen, sonst kommts zu Fehlern, falls jamand "entfernung" gereits als Gobal definiert hat.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Länge einer Strecke zwischen 2 Punkten berechnen.

Beitrag von Nino »

Das steht bereits recht lange in der PB-Hilfe, soweit ich weiß.
Das steht auch schon ziemlich lange in den Aufzeichnungen des Pythagoras. :mrgreen:
Wenn du also schon eine Fertige prozedur anbietest, benutze bitte auch Protected für deine Variablen, sonst kommts zu Fehlern, falls jamand "entfernung" gereits als Gobal definiert hat.
Das wollte ich auch gerade schreiben. Gerade bei so kleinem Code ist es wohl nicht zu viel erwartet, dass er auch bei Verwendung von

Code: Alles auswählen

EnableExplicit
funktioniert.

Grüße, Nino
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Re: Länge einer Strecke zwischen 2 Punkten berechnen.

Beitrag von Jilocasin »

Nino hat geschrieben:Das steht auch schon ziemlich lange in den Aufzeichnungen des Pythagoras.
Dann müsste man aber zu jeder PB-Lizenz auch einige Kilo Keilschrifttafeln ausliefern, weil der hats nämlich eventuell von den Babyloniern geklaut :mrgreen:
Bild
Antworten