Historique des modifications - Message

Message #4234

Sujet: Problème de rotation/déplacement


Type Date Auteur Contenu
Dernière modification 11-06-2008 16:23:54 samsoft
i pi pi Hourra ! J'ai réussi grâce à vous (et à mon prof de proba) big_smile Alors 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 merci smile

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 message 11-06-2008 16:22:07 samsoft
i pi pi Hourra ! J'ai réussi grâce à vous (et à mon prof de proba) big_smile Alors 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 merci smile

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

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
136 invités en ligne
membre en ligne: -
RSS Feed