Hallo, vor geraumer Zeit wollte ich wissen, wie man es hinbekommt, dass ein node in Irrlicht sich der Kamera zuwendet, bzw. sich dementsprechend rotiert .
Dazu hab ich folgende Lösung mit dem atan2 erhalten:
Func ATan2(Const $ny, Const $nx)
Local $nResult
If IsNumber($nY) = 0 Then
SetError(1)
Return 0
ElseIf IsNumber($nX) = 0 Then
SetError(1)
Return 0
EndIf
If $nX = 0 Then
If $nY > 0 Then
$nResult = $PI / 2.0
ElseIf $nY < 0 Then
$nResult = 3.0 * $PI / 2.0
Else
SetError(2)
Return 0
EndIf
ElseIf $nX < 0 Then
$nResult = ATan($nY / $nX) + $PI
Else
$nResult = ATan($nY / $nX)
EndIf
While $nResult < 0
$nResult += 2.0 * $PI
WEnd
Return $nResult
EndFunc ;==>ATan2
Eben hab ich ne Funktion von C++ in Autoit übersetzt:
func _facetarget()
;$x_s= $x_start
;$x_e=$x_ende
; Die zwei vektoriellen Position werden dadurch bezeichnet
; Die Funktion ist vorerst nur für die x_werte
$myrotation_y= atan($z_s/$x_s)*180/$pi
if atan($x_e-$x_s)>0 then
$myrotation_y= 90 - $myrotation_y
elseif atan($x_e-$x_s)<0 then
$myrotation_y= -90 - $myrotation_y
endif
;$myrotation_y-=90
_irrsetnoderotation($triax_node, 0, $myrotation_y, 0)
endfunc
Die Funktionen scheinen mir nur Näherungswerte für die Rotationen zu liefern. Wie komm ich auf die exakten Werte?