#include <File.au3>
#include <Array.au3>

Global $PI = ACos(-1), $aRetArray

$f = fileopen("testkoord.txt",0)                ; Testdaten mit Koordinaten lat und lon
_FileReadToArray($f, $aRetArray, Default, ";")  ; Dateiinhalt in Array einlesen
FileClose($f)

$f = fileopen("testkoord_richt.csv",2)    ; neue Datei anlegen für Ergebnisaufnahme

for $in = 1 to ubound($aRetArray)-2       ; Schleife zum Bewerten der GeoDaten

$a=_CalcAngle($aRetArray[$in][0],$aRetArray[$in][1],$aRetArray[$in+1][0],$aRetArray[$in+1][1])   ; gefunden in Autoit

$anz = atan2($aRetArray[$in+1][0]-$aRetArray[$in][0], $aRetArray[$in+1][1]-$aRetArray[$in][1]) * 180 / $PI  ; alternative Formel von Twinky, autoit.de

$xx = FileWrite($f,$aRetArray[$in][0]&";"&$aRetArray[$in][1]&";"&$a&";"&$anz&@CRLF)     ; schreiben der ur- und zielwerte
Next
fileclose($f)


Func atan2($y, $x)
	Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
EndFunc   ;==>atan2



Func _CalcAngle($PosX, $PosY, $targetPosX, $targetPosY)
    If $PosX < $targetPosX And $PosY < $targetPosY Then
        $gegenkathete = $PosX - $targetPosX
        $ankathete = $PosY - $targetPosY
        $Quotient = $ankathete / $gegenkathete
        $x = ATan(0.5)
        $pi = 4 * ATan(1)
        $radToDeg = 180 / $pi
        $y = ATan($Quotient) * $radToDeg
        $y = $y + 90
        $y = $y - 180
        $y = $y * -1
        $y = $y - 180
        $y = $y * -1
        Return $y
    ElseIf $PosX < $targetPosX And $PosY > $targetPosY Then
        $gegenkathete = $PosX - $targetPosX
        $ankathete = $PosY - $targetPosY
        $Quotient = $ankathete / $gegenkathete
        $x = ATan(0.5)
        $pi = 4 * ATan(1)
        $radToDeg = 180 / $pi
        $y = ATan($Quotient) * $radToDeg
        $y = $y + 90
        $y = $y - 180
        $y = $y * -1
        $y = $y - 180
        $y = $y * -1
        Return $y
    ElseIf $PosX > $targetPosX And $PosY > $targetPosY Then
        $gegenkathete = $PosX - $targetPosX
        $ankathete = $PosY - $targetPosY
        $Quotient = $ankathete / $gegenkathete
        $x = ATan(0.5)
        $pi = 4 * ATan(1)
        $radToDeg = 180 / $pi
        $y = ATan($Quotient) * $radToDeg
        $y = $y + 90
        $y = $y - 180
        Return $y
    ElseIf $PosX > $targetPosX And $PosY < $targetPosY Then
        $gegenkathete = $PosX - $targetPosX
        $ankathete = $PosY - $targetPosY
        $Quotient = $ankathete / $gegenkathete
        $x = ATan(0.5)
        $pi = 4 * ATan(1)
        $radToDeg = 180 / $pi
        $y = ATan($Quotient) * $radToDeg
        $y = $y + 90
        $y = $y - 180
        Return $y
    EndIf
EndFunc