Ich hab jetzt schon stunden gegoogelt aber finde keine lösung das ganze in Autoit umzusetzen
Ich habe 2 Punkte im 3D raum zum einen die Kamera zum anderen den punkt wo ich hinschauen möchte, nur bekomm ich immer falsche Ergebnisse raus
Hier ein Bild zum verständnis was ich suche
[Blockierte Grafik: https://image.ibb.co/icmVLw/camera.png]
hier ist der Code den ich schon testweise habe
Code
Global $Distance2D = 0, $Distance3D = 0
ConsoleWrite("Camera Yaw: " & _GetCamYaw(0,0,0,5,5,5) & @CRLF & "Camera Pitch: " & _GetCamPitch(0,0,0,5,5,5) & @CRLF & "Distance3D: " & $Distance3D & @CRLF)
Func _NullifyCoord($_Own_X, $_Own_Y, $_Own_Z, $_T_X, $_T_Y, $_T_Z)
Global $dx = $_T_X - $_Own_X
Global $dy = $_T_Y - $_Own_Y
Global $dz = $_T_Z - $_Own_Z
Global $dx2 = $dx*$dx
Global $dy2 = $dy*$dy
Global $dz2 = $dz*$dz
Global $Distance2D = Sqrt($dx2 + $dy2)
Global $Distance3D = Sqrt($dx2 + $dy2 + $dz2)
EndFunc
Func _GetCamYaw($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
_NullifyCoord($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
Return atan2($dy,$dx)
EndFunc
Func _GetCamPitch($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
_NullifyCoord($Own_X, $Own_Y, $Own_Z, $T_X, $T_Y, $T_Z)
$rotx = atan2($dy,$dx); <-- from some tests
$roty = atan2($dx* Cos($rotx), $dz); <-- from some tests
$rotz = atan2(Cos($rotx), Sin($rotx) * Sin($roty)); <-- from some tests
Return atan2($dz,$Distance3D)
EndFunc
Func atan2($y, $x)
Return (2 * ATan($y / ($x + Sqrt($x * $x + $y * $y))))
EndFunc
Alles anzeigen