vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Mathematisches Problem 
Autor: Preisser
Datum: 25.01.09 13:31

Hallo,

ich weiß nicht ob ich das ganz verstanden habe. Wenn der Mittelpunkt und 2 Punkte des Kreises gegebn sind, ist der Radius ja nicht erforderlich, denn das ist ja nur der Abstand eines Kreispunktes vom Kreismittelpunkt.
Um herauszufinden, ob der Kreisbogen im oder gegen den Uhrzeigersinn verläuft, würde ich einfach den Winkel berechnen zwischen dem Start- und dem Endpunkt. Ich nehme mal an, dass die Zuordnung der Richtung bis 180° erfolgen soll (d. h. die kürzeste Kreisbogenlänge). Wenn beispielsweide der Startpunkt (vom Mittelpunkt aus gesehen) den Winkel 90° und der Endpunkt den Winkel 355° hat (ergibt einen Differenzwinkel von 265 ° (>180°), dann wird der Kreisbogen im Uhrzeigersinn aufgetragen (man könnte ihn natürlich auch gegen den Uhrzeigersinn auftragen, aber dann wäre die Strecke länger).

Option Explicit
Private Type KoordinatenTyp
X As Double
Y As Double
End Type
Private Type KreisBogenTyp
Mittelpunkt As KoordinatenTyp
Startpunkt As KoordinatenTyp
Endpunkt As KoordinatenTyp
End Type
 
Private Function Vektorwinkeld(X1 As Double, Y1 As Double) As Double
Dim Winkel1 As Double
'1. Quadrant
If X1 >= 0 And Y1 >= 0 Then
  If X1 = 0 Then Winkel1 = Atn(1) * 2
  If X1 <> 0 Then Winkel1 = Atn(Y1 / X1)
End If
'2./3. Quadrant
If X1 < 0 Then Winkel1 = Atn(1) * 4 + Atn(Y1 / X1)
'4. Quadrant
If X1 >= 0 And Y1 < 0 Then
  If X1 = 0 Then Winkel1 = Atn(1) * 6
  If X1 <> 0 Then Winkel1 = Atn(1) * 8 + Atn(Y1 / X1)
End If
Vektorwinkeld = Winkel1
End Function
 
Private Function ImUhrzeigersinn(KreisbogenStruktur As KreisBogenTyp) As Boolean
Dim WinkelStartpunkt As Double
Dim WinkelEndpunkt As Double
WinkelStartpunkt = Vektorwinkeld(KreisbogenStruktur.Startpunkt.X - _
  KreisbogenStruktur.Mittelpunkt.X, KreisbogenStruktur.Startpunkt.Y - _
  KreisbogenStruktur.Mittelpunkt.Y)
WinkelEndpunkt = Vektorwinkeld(KreisbogenStruktur.Endpunkt.X - _
KreisbogenStruktur.Mittelpunkt.X, KreisbogenStruktur.Endpunkt.Y - _
KreisbogenStruktur.Mittelpunkt.Y)
Dim Winkelunterschied As Double
Winkelunterschied = WinkelEndpunkt - WinkelStartpunkt
If Winkelunterschied >= 4 * Atn(1) Then Winkelunterschied = _
  Winkelunterschied - 8 * Atn(1)
ImUhrzeigersinn = Winkelunterschied < 0
End Function
 
Private Sub Form_Load()
'Beispiel
Dim Kreisbogen As KreisBogenTyp
Kreisbogen.Mittelpunkt.X = 3
Kreisbogen.Mittelpunkt.Y = 3
Kreisbogen.Startpunkt.X = 3
Kreisbogen.Startpunkt.Y = 4
Kreisbogen.Endpunkt.X = 2
Kreisbogen.Endpunkt.Y = 3
MsgBox ImUhrzeigersinn(Kreisbogen)
End Sub


Beitrag wurde zuletzt am 25.01.09 um 13:39:00 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mathematisches Problem946MichaelG25.01.09 10:35
Re: Mathematisches Problem688Preisser25.01.09 13:31
Re: Mathematisches Problem584Dirk26.01.09 07:59
Re: Mathematisches Problem569Dirk26.01.09 08:11
Re: Mathematisches Problem549MichaelG26.01.09 08:31

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel