Tipp 053: Streckenlänge und Steigungswinkel zwischen zwei Punkten berechnen
Autor: Alexander Kopatz VB-Version: Visual Basic 6.0 Download: Beispielprojekt Tipp-053
Beschreibung
Sind zwei Punkte eines Koordinatensystems mit X- und Y-Koordinate bekannt lassen sich verschiedene Verhältnisse dieser Punkte zueinander bestimmen. Dieses Beispiel bestimmt die Streckenlänge zwischen den beiden Punkten sowie den Steigungswinkel der zugehörigen Geraden. Selbstverständlich entspricht dieser Winkel auch einer gedachten Geraden der über die genannten Punkte hinausgeht und dabei beide Punkte schneidet.
Die Steigung (m) zwischen zwei Punkten berechnet sich dabei nach der folgenden Formel:
∆y y2 - y1
m = ---- = ---------
∆x x2 - x1
Für die Berechnung der Steigung ist es dabei irrelevant ob hierfür positive oder negative Koordinatenpunkte verwendet werden. Um aus der Steigung (m) einen Winkel zu bestimmen wird die Arkustangensfunktion verwendet. Diese ist in Visual Basic bereits durch die Atn-Funktion implementiert. Die mathematische Formel lautet dementsprechend:
α = arctan(m)
Wie in nahezu jeder Programmiersprache liefert auch Visual Basic ein Ergebnis vom Typ Radiant (Bogenmaß). Hiergegen ist Grundsätzlich nichts einzuwenden, gleichwohl soll eine Umrechnung in die im Allgemeinen übliche Maßeinheit Grad erfolgen. Da ein Kreis von 360 Grad 2 π Radiant entspricht, erfolgt die Umrechnung folgendermaßen:
β = α * (180 / π)
Die Streckenlänge zwischen den zwei Punkten entspricht ihrem Abstand. Im kartesischen Koordinatensystem lässt sich dieser leicht mit Hilfe des Satzes von Phythagoras berechnen. Daraus ergibt sich für die Streckenlänge zwischen Punkt-1 und Punkt-2:
c = √((x2 - x1)² + (y2 - y1)²)
Quellcode
frmBeispiel53
CommandButton cmdCalc
Form frmBeispiel53
Label Label1
Label Label2
Label Label3
Label Label4
Label Label6
Label Label7
TextBox txtP1X
TextBox txtP1Y
TextBox txtP2X
TextBox txtP2Y
TextBox txtSteigung
' VISUAL BASIC WORLD
' ===========================================
' Das große Portal zum Thema Visual Basic.
'
' Wenn Ihnen dieser Source Code gefallen hat,
' dann empfehlen Sie Visual Basic World bitte
' weiter und/oder setzen Sie einen Link auf:
'
' http://www.visualbasicworld.de/
'
' Vernetzen Sie sich mit uns:
'
' http://twitter.com/visualbasicwrld
Option Explicit
Private Sub cmdCalc_Click()
Dim dblSteigung As Double
Dim dblSteigungswinkel_Bogenmaß As Double
Dim dblSteigungswinkel_Grad As Double
Dim DeltaY As Double
Dim DeltaX As Double
DeltaY = CDbl(txtP2Y.Text) - CDbl(txtP1Y.Text)
DeltaX = CDbl(txtP2X.Text) - CDbl(txtP1X.Text)
If Not DeltaX = 0 Then
dblSteigung = DeltaY / DeltaX
'Die Differenz von Y2 und Y1 (Delta Y) dividiert durch
'die Differenz von X2 und X1 (Delta X) ergibt
'die Steigung der Geraden.
dblSteigungswinkel_Bogenmaß = Atn(dblSteigung)
'Der Arkustangens der Steigung ergibt den
'Steigungswinkel im Bogenmaß.
dblSteigungswinkel_Grad = _
dblSteigungswinkel_Bogenmaß * (180 / 3.14159265358979)
'Umrechnung des Winkels von Bogenmaß in Grad,
'Formel: Bogenmaß * (180 / Pi).
txtSteigung.Text = dblSteigung
txtSteigungswinkelBogenmaß = dblSteigungswinkel_Bogenmaß
txtSteigungswinkelGrad = dblSteigungswinkel_Grad & "°"
'Ausgabe der Ergebnisse.
txtStreckenlänge.Text = _
Sqr((CDbl(txtP2X.Text) - CDbl(txtP1X.Text)) ^ 2 _
+ (CDbl(txtP2Y.Text) - CDbl(txtP1Y.Text)) ^ 2)
'Berechnung der Streckenlänge.
End If
End Sub