Winkelberechnung in VBA
21.04.2015 14:41:47
pweksictul
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