Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1420to1424
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Winkelberechnung in VBA

Winkelberechnung in VBA
21.04.2015 14:41:47
pweksictul
Hallo,
ich möchte Winkel zwischen drei Punkten berechnen, was auch grundsätzlich klappt, aber mit der Variante, die ich mir aus verschiedenen Foren zusammengeklebt habe, ist der Winkel immer hÖchsten 180° groß. In dem Beispiel unten hätte ich aber gerne, dass nicht zwei Mal dasselbe Ergebnis herauskommt, sondern einmal 135° und einmal 225°. (Meine Mathekenntnisse sind leider völlig verschüttet und man verzeihe mir die vielleicht unüblichen Bezeichnungen unten.)
Beispielcode
Sub Winkel_test()
Dim x(1 To 4), y(1 To 4), c(1 To 3), b(1 To 2)
Dim WinkelA, WinkelB, Pi
Pi = 4 * Atn(1)
x(1) = 1
x(2) = 2
x(3) = 2
x(4) = 3
y(1) = 1
y(2) = 2
y(3) = 3
y(4) = 4
'Strecke c
c(1) = Sqr((x(2) - x(1)) ^ 2 + (y(2) - y(1)) ^ 2)
c(2) = Sqr((x(3) - x(2)) ^ 2 + (y(3) - y(2)) ^ 2)
c(3) = Sqr((x(4) - x(3)) ^ 2 + (y(4) - y(3)) ^ 2)
'Strecke b
b(1) = Sqr((x(3) - x(1)) ^ 2 + (y(3) - y(1)) ^ 2)
b(2) = Sqr((x(4) - x(2)) ^ 2 + (y(4) - y(2)) ^ 2)
'Winkelberechnung
WinkelA = (WorksheetFunction.Acos((c(1) ^ 2 + c(2) ^ 2 - b(1) ^ 2) _
/ (2 * c(1) * c(2)))) / Pi * 180
WinkelB = (WorksheetFunction.Acos((c(2) ^ 2 + c(3) ^ 2 - b(2) ^ 2) _
/ (2 * c(2) * c(3)))) / Pi * 180
End Sub
Danke im Voraus!
Pwek

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Winkel2 = Winkel1 - 360° '_oT
21.04.2015 15:06:43
pweksictul
Danke, aber das hilft nicht. Die Daten stehen da nur, um das Problem zu verdeutlichen. Die Winkel sind voneinander unabhängig, d.h. ich kann nicht WinkelA aus WinkelB ableiten.

Frage noch offen
21.04.2015 16:08:44
pweksictul
Frage noch offen

AW: Winkelberechnung in VBA
21.04.2015 16:45:22
Klexy
Meine Geometrie-Kenntnisse sind auch verschüttet und ich hab keine Ahnung, was du da berechnest, aber da muss das Gleiche rauskommen, weil die Faktoren alle gleich sind. Oder lieg ich da falsch?
Sub Winkel_test()
Dim x(1 To 4), y(1 To 4), c(1 To 3), b(1 To 2)
Dim WinkelA, WinkelB, Pi
Pi = 4 * Atn(1)
x(1) = 1
x(2) = 2
x(3) = 2
x(4) = 3
y(1) = 1
y(2) = 2
y(3) = 3
y(4) = 4
'Strecke c
c(1) = Sqr((x(2) - x(1)) ^ 2 + (y(2) - y(1)) ^ 2)
c(2) = Sqr((x(3) - x(2)) ^ 2 + (y(3) - y(2)) ^ 2)
c(3) = Sqr((x(4) - x(3)) ^ 2 + (y(4) - y(3)) ^ 2)
Range("B2") = c(1)
Range("B3") = c(2)
Range("B4") = c(3)
'Strecke b
b(1) = Sqr((x(3) - x(1)) ^ 2 + (y(3) - y(1)) ^ 2)
b(2) = Sqr((x(4) - x(2)) ^ 2 + (y(4) - y(2)) ^ 2)
Range("B6") = b(1)
Range("B7") = b(2)
'Winkelberechnung
WinkelA = (WorksheetFunction.Acos((c(1) ^ 2 + c(2) ^ 2 - b(1) ^ 2) / (2 * c(1) * c(2))))  _
/ Pi * 180
WinkelB = (WorksheetFunction.Acos((c(2) ^ 2 + c(3) ^ 2 - b(2) ^ 2) / (2 * c(2) * c(3))))  _
/ Pi * 180
Range("B9") = (c(1) ^ 2 + c(2) ^ 2 - b(1) ^ 2) / (2 * c(1) * c(2)) 'über dem Bruch in  _
Acos Winkel A
Range("B10") = (2 * c(1) * c(2))                                   'unter dem Bruch in  _
Acos Winkel A
Range("B11") = (c(2) ^ 2 + c(3) ^ 2 - b(2) ^ 2) / (2 * c(2) * c(3)) 'über dem Bruch in  _
Acos Winkel B
Range("B12") = (2 * c(2) * c(3))                                   'unter dem Bruch in  _
Acos Winkel B
End Sub

Anzeige
AW: Winkelberechnung in VBA
21.04.2015 17:02:28
UweD
Hallo
wenn man die Strecken mal darstellt, sieht das so aus.
Userbild
Du hast also 2 Dreiecke.
Im oberen Teil rechnest du die Längen der einzelnen Strecken aus.
im unteren Teil, über den Cosinussatz je einen Winkel
- 1. den Winkel aus Dreieck 1 zwischen c1 und c2
- 2. den Winkel aus Dreieck 2 zwischen c2 und c3
Die sind aber nunmal gleich groß. (Stufenwinkel)
Willst du evt. einen anderen 2. Winkel berechnen?
welchen?
zwischen c1 und b1 aus Dreieck 1
zwischen c2 und b1 aus Dreieck 1
oder
zwischen c2 und b2 aus Dreieck 2
zwischen c3 und b2 aus Dreieck 2
http://de.wikipedia.org/wiki/Kosinussatz
Gruß UweD

Anzeige
AW: Winkelberechnung in VBA
21.04.2015 17:05:24
UweD
nicht Stufenwinkel, sondern Wechselwinkel

AW: Winkelberechnung in VBA
21.04.2015 17:21:51
pweksictul
Danke für die Darstellung. Jetzt kann ich selbst lösen.
Ich möchte immer den Winkel im Uhrzeigersinn berechnen:
  • für das Dreieck 1 in der Darstellung den Winkel zwischen c1 und c2

  • für das Dreieck 2 in der Darstellung den Wechselwinkel zwischen c2 und c3.

  • Lässt sich dann so ausrechnen (bitte um Korrektur, falls ich einen Denkfehler habe):
    Für Dreieck 1: Wenn der X-Wert von P2 gößer ist als (X(P3) - X(P1)), dann so wie bisher rechnen.
    Für Dreieck 2: Wenn der X-Wert von P3 kleiner ist als (X(P4) - X(P2)), dann Wechselwinkel rechnen.
    Sollte gehen. Ich werde mal versuchen, dass in dem ursprünglich geposteten Code umzusetzen.
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige