Visual Basic World - Programmierung und BeispieleVisual Basic World - Tipps und TutorialsVisual Basic World - Source-Code und Forum

<leer>

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

<leer> Aktuelle Seite Back To Top
Druckansicht | Feedback | Favoriten
Copyright © Visual Basic World, 2000-2022 | Kontakt | Impressum

Visual Basic World @ Twitter

Folgen Sie Visual Basic World!

Visual Basic World @ Twitter
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei Twitter (@visualbasicwrld).
Vielen Dank!