[ Sanjin_JMF @ 14.06.2008. 18:19 ] @
u levelu sve radi kako treba ali kad se mousom rotira karakter, nekon 180 stepeni, on se sam okrene za 180 stepeni i vidim mu prednju stranu.

karakter gleda naprijed i ako rotiram u desno, nakon 180 stepeni on je okrenut prema kameri. neocekivano i momentalno se okrene nakon 180 stepeni

Code:


glPushMatrix();
        glTranslatef(rhCam.mView.x,0.0f,rhCam.mView.z);
        rotateCharacter=(-(atan(((rhCam.mPos.x-rhCam.mView.x)/(rhCam.mPos.z-rhCam.mView.z))))/PI*180);
        glRotatef( -rotateCharacter, 0.0f, 1.0f, 0.0f);
        rhGame.rhPlayer.DrawCharacter();//iscrtavanje karaktera
    glPopMatrix();

[ glorius @ 15.06.2008. 18:46 ] @
Da, to je u prirodi atan funkcije...

0 < alfa < 180

Ne mogu da se setim bas ( odavno to bese ) ali, mislim da sam problem resio koriscenjem funkcije atan2() umesto atan() zato sto atan2() funkcija vodi racuna u kojem kvadrantu je rezultat.


[Ovu poruku je menjao glorius dana 15.06.2008. u 20:10 GMT+1]
[ Sanjin_JMF @ 17.06.2008. 09:05 ] @
funkcija atan2 trazi dva parametra ,a ja ne znam koje tacno, nigdje neko konkretno objasnjenje nisam nasao

ako neko nade link ili dio koda , HVALA
[ glorius @ 17.06.2008. 09:19 ] @
Prihvata parametre x i z jedinicnog vektora koji se dobija kao razlika vektora pozicije karaktera i kamere.

vector3 vec = charPos - camPos;
vector3 normalizedVec = normalize(vec); // dobijamo jedinicni vektor pravca

float angle = atan2( normalizedVec.x, normalizedVec.z );