Skalarprodukt = NaN - Ratlosigkeit
Übersicht

![]() |
NightPhoenixBetreff: Skalarprodukt = NaN - Ratlosigkeit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey leute ich benutze das Skalarprodukt um den Winkel zwischen 2 Vectoren zu berechnen...
Ich habe 2 Objekte: Ein NPC irgendwo und den Spieler Aktion: Der NPC soll sich auf den Spieler ausrichten Anmerkung: AlignToVector funktioniert in dem Falle nicht, da es sich in beiden Fällen um Objekte handelt, die an Pivots angehängt sind... die Position des NPC wird aber nur lokal ausgelesen, also ohne Rücksicht auf den Pivot hier der code: Code: [AUSKLAPPEN] Function KI_Zielen(SIPI)
Local max,v1x#,v1y#,v1z#,v2x#,v2y#,v2z#,spx#,spy#,x1#,x2#,y1#,y2#,z1#,z2#,sqx1#,sqy1#,sqx2#,sqy2#,cx#,cy#,cx_old#,cy_old# max=100 pp\kimz#=0;pp\SpeedMax#/15.0 x1#=EntityX(pp\O,1) y1#=EntityY(pp\O,1) z1#=EntityZ(pp\O,1) ;bestimme Punkt A von NPC MoveEntity pp\O,0,0,100 x2#=EntityX(pp\O,1) y2#=EntityY(pp\O,1) z2#=EntityZ(pp\O,1) ;bestimme Punkt B von NPC MoveEntity pp\O,0,0,-100 v1x#=x2#-x1# v1y#=y2#-y1# v1z#=z2#-z1# ;Vektor von NPC aus Punkt A und B (AB) ;x1#=x1# ;y1#=y1# ;z1#=z1# x2#=EntityX(SIPI,1) y2#=EntityY(SIPI,1) z2#=EntityZ(SIPI,1) ;Punkt C: Position des Spielers v2x#=x2#-x1# v2y#=y2#-y1# v2z#=z2#-z1# ;Vektor des Spielers aus A und C (AC) sqx1#=Sqr((v1x#^2)+(v1z#^2)) ;Wurzelgleichungen sqy1#=Sqr((v2x#^2)+(v2z#^2)) sqx2#=Sqr((v1x#^2)+(v1y#^2)) sqy2#=Sqr((v2x#^2)+(v2y#^2)) spx#=(v1x#*v2x#+v1z#*v2z#)/(sqx1#*sqy1#) ;skalarprodukt / 2 wurzeln spy#=(v1x#*v2x#+v1y#*v2y#)/(sqx2#*sqy2#) cx#=ACos(spx#)/100.0 ;Cosinus des Ergebnisses -> Ergibt: Winkel X cy#=ACos(spy#)/100.0 ;Cosinus des Ergebnisses -> Ergibt: Winkel Y TurnEntity pp\O,cx#,cy#,0 pp\kitx#=0 pp\kity#=0 pp\kitz#=0 End Function Das Problem ist es wie schon gesagt, dass spx# oder spy# bei annäherung an 0 (also wenig Rotation) den wert "NaN" annehmen... ich hab aber keine idee woran das liegen könnte. Beseitige ich das problem indem ich sage wenn wert<0.1 (winkel) then wert=0 dann dreht sich das objekt wieder und wieder um 360° Achja wenn es "NaN" annimmt verschwindet das Objekt ... das existiert einfach nicht mehr ^^ Ich wette das ist wieder irgendein dummer Logikfehler, weil ich schonwieder stundenlang damit beschäftigt bin ![]() Hoffe jemand kann mir helfen, danke schonmal NightPhoenix *edit* das ist diese Formel hier: ![]() nur nach cos (winkel) umgestellt cos (winkel) = (Skalarprodukt) / (betrag(vektor1)*betrag(vektor2)) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group