=====math.atan2===== ''math.atan2(_a, _b)'' berechnet den Arcus Tangens bzw. tan-1 des Quotienten ''_a/_b''. Die Funktion wird in der Regel dazu verwendet, einen Winkel α wie im Bild unten dargestellt zu ermitteln. {{ scripting:reference:standard_library:math:atan.png }} ''math.atan2(dy, dx)'' wird dabei α ergeben. **Wichtig**: Der Winkel wird im **Bogenmaß** ausgegeben! Wird ein Gradmaß gebraucht, muss der berechnete Winkel mit [[ scripting:reference:standard_library:math:deg |math.deg]] umgerechnet werden. ====Unterschied zu math.atan==== Da ''math.atan'' nur einen Parameter hat, müssen die beiden Katheten ''dy'' und ''dx'' vor der Funktionsanwendung durcheinander geteilt werden. Dadurch ist der Wertebereich, den das Ergebnis haben kann, eingeschränkt. Beispielsweise haben ''dy/dx'' und ''-dy/-dx'' den gleichen Wert, liegen aber, wie im Bild unten dargestellt, einem anderen Winkel zugrunde. {{ scripting:reference:standard_library:math:atan2.png }} Mit ''math.atan'' lässt sich also der im Bild lila dargestellte Winkel nicht berechnen. Stattdessen wird der grüne ausgegeben, da die Funktion die Vorzeichen der ursprünglichen ''dx'' und ''dy'' nicht mehr kennt. Das führt dazu, dass ''math.atan'' nur in der oberen Kreishälfte nutzbar ist. ''math.atan2'' dagegen hat 2 Parameter, um die beiden Katheten samt ihrer Vorzeichen übergeben zu können. Dadurch wird die Berechnung des Winkels in allen 4 Quadranten möglich. ====Beispiel Anwendungsfall==== ''math.atan2'' kann dazu verwendet werden, eine Entity nach einer bestimmten Position auszurichten. Die Funktion [[ scripting:reference:comfort:lookat |LookAt]] kann eine Siedler-Entity eine andere anschauen lassen. Das funktioniert aber nur, wenn sich die zu drehende Entity bewegen kann, schließt also beispielsweise Gebäude aus. Berechnet man den korrekten Winkel händisch, kann man auch z.B. ein Wohnhaus in Richtung einer Straße ausrichten: local ResidencePosition = {X = 13000, Y = 5000} local RoadPosition = {X = 13800, Y = 5500} local Angle = math.atan2(RoadPosition.Y - ResidencePosition.Y, RoadPosition.X - ResidencePosition.X) -- Die Tür des mittleren Wohnhauses liegt im 90°-Winkel zum Koordinatensystem -- Dieser Winkel muss also noch addiert werden Logic.CreateEntity(Entities.PB_Residence2, ResidencePosition.X, ResidencePosition.Y, math.deg(Angle) + 90, 1)