IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

vecteur orthogonal


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 36
    Par défaut vecteur orthogonal
    Bonjour,

    je sèche sur le problème suivant :

    j'aimerais tourner ma camera autour d'un objet non pas selon y, mais "au-dessus" de l'objet. Voici la méthode que je propose :

    je calcule le vecteur (x,y,z) camera->objet, puis le vecteur orthogonal a ce vecteur, et enfin la normale entre ces deux vecteurs. Cela me donne une direction (x',y',z'), et je translate ma camera d'un certain pas dans cette direction.

    Le problème que je rencontre est le suivant : comment calculer un vecteur orthogonal à un autre vecteur ?

    si (x,y,z) est mon vecteur et (x',y',z') le vecteur orthogonal, je dois résoudre l'équation :

    xx' + yy' + zz' = 0.

    Cela me donne une équation à 3 inconnues. Je dois alors fixer 2 inconnues, mais même en opérant aini, le vecteur trouvé n'est pas orthogonal.

    Alors comment dois-je procéder ? Comment fixer mes inconnues ? Ou bien existe-t-il une méthode plus simple ?

    Merci d'avance,

    Séb

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Dans l'espace, l'ensemble des vecteurs orthogonaux à un vecteur est un plan, et non une droite, donc ton problème est mal posé.

    Si un seul vecteur orthogonal te suffit, tu n'as qu'à prendre un vecteur non colineaire à ton vecteur de départ, et calculer le produit vectoriel des deux vecteurs, tu en auras un orthogonal à ces deux là (et donc en particulier à celui de départ).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 36
    Par défaut
    En effet, ceci est vrai et j'avoue comment j'ai pu oublier...

    Le soucis reste cependant le suivant : Je n'ai qu'un seul vecteur connu, celui de la camera vers le point de rotation. Et à un vecteur est associé une infinité de plans.

    J'aimerais trouver un second vecteur pour calculer le plan nécessaire au calcul de la normale, cependant, lequel choisir ? J'espère que vous comprenez ce que je veux faire : tourner "au-dessus" du point, c'est a dire effectuer une rotation autour du point en question "vers le haut" ou "vers le bas"..

    C'est assez difficile à concevoir, étant donné que la rotation change la position de la caméra en ses 3 coordonnées... et non pas en x et z pour une rotation selon y...

    Un exemple, ou une url serait bienvenue...

    merci

    Séb

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Honnêtement, non, je ne comprends pas ce que tu veux faire. Un petit dessin peut-être ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 36
    Par défaut
    En essayant d'être plus précis, je voudrais réussir a tourner autour d'un point dans toutes les directions : de gauche a droite et de bas en haut.

    La rotation de gauche a droite est une rotation sur l'axe des y, ce qui ne pose pas de problème.

    C'est la rotation de bas en haut qui est plus embêtante

    De façon concrète, prenons un jeu de billard. La queue peut aussi bien frapper la boule sur le dessus de la balle que par dessous...

    Seb

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Je comprends toujours pas bien. Ton axe y est le vertical ? Alors les rotations sur les x ou sur les z vont du bas vers le haut et vice-versa.

    Toujours pas de petit dessin ?

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et si plutôt que chercher un axe autour duquel tourner, tu optais pour des coordonnées sphériques ? Lorsque tu tournes tu met simplement à jour ton angle de rotation, puis au moment d'afficher tu passes tout ça en coordonnées cartésiennes à l'aide de sin et de cos.

Discussions similaires

  1. Vecteur orthogonal en coordonnées sphériques
    Par on2101 dans le forum Mathématiques
    Réponses: 2
    Dernier message: 06/04/2012, 21h24
  2. Réponses: 4
    Dernier message: 24/01/2005, 08h20
  3. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51
  4. Zoom sur des vecteurs ou lignes
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 25/11/2002, 10h40
  5. matrices * vecteur
    Par delire8 dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 07/09/2002, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo