Historique des modifications - Message

Message #4231

Sujet: Problème de rotation/déplacement


Type Date Auteur Contenu
Dernière modification 11-06-2008 10:33:29 samsoft
Je crois saisir votre concept de local, global. Mais même avec votre code, cela ne roule pas hmm

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), 0, sin(rot.Y));
        axe_z_local.normalize();

        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));
    }
}

J'ai vérifie, c'est bien la variable Y qu'il faut modifier.
axe_z_local.normalize();

Veut il dire qu'on transforme les coordonnées en norme ?

Faut il uniquement utiliser le vecteur_z ?


PS: Au lycée ben moi j'ai vu vecteur... (2d et 3d pour coordonnées) là je suis en prem S mais pas de rotation (c'est en term) et puis l'arithémique/analyse (suite, fonction, proba) j'adore ca mais la géométrique (excepté l'analytique qui ressemble à la physique) j'aime pas smile
Création du message 11-06-2008 10:32:12 samsoft
Je crois saisir votre concept de local, global. Mais même avec votre code, cela ne roule pas hmm

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), 0, sin(rot.Y));
        axe_z_local.normalize();

        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));
    }
}

J'ai vérifie, c'est bien la variable Y qu'il faut modifier.
axe_z_local.normalize();

Veut il dire qu'on transforme les coordonnées en norme ?

Faut il uniquement utiliser le vecteur_z ?


PS: Au lycée ben moi j'ai vu vecteur... (2d et 3d pour coordonnées) là je suis en prem S mais pas de rotation (c'est en term) et puis l'arithémique/analyse (suite, fonction, proba) j'adore ca mais la géométrique (excepté l'analytique qui ressemble à la physique) j'aime pas smile

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
135 invités en ligne
membre en ligne: -
RSS Feed