Historique des modifications - Message

Message #4234

Sujet: Problème de rotation/déplacement


TypeDateAuteurContenu
Dernière modification11-06-2008 16:23:54samsoft
i pi pi Hourra ! J'ai réussi grâce à vous (et à mon prof de proba)big_smileAlors comme je n'ai pas (encore) les connaissances pour parvenir de manière raisonnée à mon problème j'ai utilisé un arbre (c'est là que je dis thx à mon prof de maths) pour tester les différentes possibilités de :

irr::core::vector3df axe_z_local = irr::core::vector3df(cos(rot.Y*3.1415f/180.0f), 0, sin(rot.Y*3.1415f/180.0f));

J'ai dis que 1 = cos(rot.Y*3.1415f/180.0f) ; 2 = 0 et 3 = sin(rot.Y*3.1415f/180.0f);

A l'aide de mon arbre j'ai testé toutes les possibilités et j'ai trouvé que 3-2-1 était la plus probable.
Cependant, ça ne fonctionnait toujours pas alors je me suis souvenu du moins que vous aviez placé, j'ai pas compris (de manière mathématique) pourquoi mais de manière logique j'ai compris.
En effet, mon perso allez dans la diagonale "opposée" au déplacement voulu j'ai donc mis un moins à sin pour régler ce problème.

Résolu,

Encore mercismile

void CEventReceiver::majOfPos()
{
    if(Nmodele != 0 && isMoving == true)
    {
        irr::core::vector3df rot = Nmodele->getRotation();
        irr::core::vector3df axe_z_local = irr::core::vector3df(cos(rot.Y*3.1415f/180.0f), 0, -sin(rot.Y*3.1415f/180.0f));

        if(move == forward)
        {
            Nmodele->setPosition(Nmodele->getPosition()+axe_z_local);
        }
        else if(move == backward)
        {
            Nmodele->setPosition(Nmodele->getPosition()-axe_z_local);
        }
        else if(move == turnLeft)
        {
            rot.Y--;
        }
        else if(move == turnRight)
        {
            rot.Y++;
        }
        Nmodele->setRotation(irr::core::vector3df(rot.X, rot.Y, rot.Z));
    }
}
Création du message11-06-2008 16:22:07samsoft
i pi pi Hourra ! J'ai réussi grâce à vous (et à mon prof de proba)big_smileAlors comme je n'ai pas (encore) les connaissances pour parvenir de manière raisonnée à mon problème j'ai utilisé un arbre (c'est là que je dis thx à mon prof de maths) pour tester les différentes possibilités de :

irr::core::vector3df axe_z_local = irr::core::vector3df(cos(rot.Y*3.1415f/180.0f), 0, sin(rot.Y*3.1415f/180.0f));

J'ai dis que 1 = cos(rot.Y*3.1415f/180.0f) ; 2 = 0 et 3 = sin(rot.Y*3.1415f/180.0f);

A l'aide de mon arbre j'ai testé toutes les possibilités et j'ai trouvé que 3-2-1 était la plus probable.
Cependant, ça ne fonctionnait toujours pas alors je me suis souvenu du moins que vous aviez placé, j'ai pas compris (de manière mathématique) pourquoi mais de manière logique j'ai compris.
En effet, mon perso allez dans la diagonale "opposée" au déplacement voulu j'ai donc mis un moins à sin pour régler ce problème.

Résolu,

Encore mercismile

void CEventReceiver::majOfPos()
{
    if(Nmodele != 0 && isMoving == true)
    {
        irr::core::vector3df rot = Nmodele->getRotation();
        irr::core::vector3df axe_z_local = irr::core::vector3df(cos(rot.Y*3.1415f/180.0f), 0, -sin(rot.Y*3.1415f/180.0f));

        if(move == forward)
        {
            Nmodele->setPosition(Nmodele->getPosition()+axe_z_local);
        }
        else if(move == backward)
        {
            Nmodele->setPosition(Nmodele->getPosition()-axe_z_local);
        }
        else if(move == turnLeft)
        {
            rot.Y--;
        }
        else if(move == turnRight)
        {
            rot.Y++;
        }
        Nmodele->setRotation(irr::core::vector3df(rot.X, rot.Y, rot.Z));
    }
}

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
98 invités en ligne
membre en ligne: -
RSS Feed