Annonce

Réduire
Aucune annonce.

[MATH] Fonction scalaire

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • [MATH] Fonction scalaire

    Bonjour,
    Je cherche une formule mathématique pour calculer l'angle de deux vecteurs normalisés sur un repère orthonormé (AÔB).

    Celle que j'utilise actuellement fonctionne, mais ne permet pas de savoir si un angle est aigu ou obtus.
    acos((vecteur_OAx*vecteur_OBx)+(vecteur_OAy*vecteur_OBy))*(180/PI)

    Quand je dis vecteur OAx, OAy, OBx, OBy ce sont des vecteurs normalisés.
    Et le calcul *(180/PI) permet la conversion radian / degré.
    visu.jpg

    Quelqu'un peut-il m'aider, me donner la fonction scalaire avec un signe (+ aigu, - obtus) ?

    Merci d'avance.

    ps: c'est pour un moteur graphique 3D, qui ne sait pas si mon polygone est devant ou derrière la caméra.
    Dernière modification par Yarflam, 12 août 2013, 23h34.
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

  • #2
    EDIT:

    Cette solution n'est pas bonne.
    (Ox-Ax)+(Oy-Ay)/abs((Ox-Ax)+(Oy-Ay)) * Angle
    Dernière modification par Yarflam, 13 août 2013, 18h32.
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

    Commentaire


    • #3
      Salut Yarflam,

      J'ai rien pigé, dont je vais essayé de comprendre ce que tu as dis précédemment.

      Tu as 2 vecteurs
      1. OA
      2. OB



      et tu veux connaitre l'angle

      ang(AOB)

      Pour cela tu dois déterminer le produit scalaire entre les 2 vecteurs

      (vec(OA).vec(OB)) = ...

      et effectivement il y a une histoire de signe.

      Soit OA (xa, ya) et OB (xb, yb) car O est l'origine (0, 0)

      vec(OA).vec(OB) = xa.xb + ya.yb si différent de 0, ils ne sont pas orthogonaux.

      Si on veut avoir l'angle on utilise cette formule

      vec(OA).vec(OB) = OA.OB.cos(OAB)

      cos(OAB) = (vec(OA).vec(OB))/(OA.OB)

      cos(OAB) = (xa.xb + ya.yb)/((sqrt(square(xa+ya)).sqrt(square(xb+yb)))

      OAB = ... (partie facile)

      square est le carré, que je n'arrive pas à représenter ici...
      sqrt est la racine carré...

      Je suis rouillé en mathématiques (ça fait 15 ans)

      Pas testé, j'ai pu faire des erreurs.

      Commentaire


      • #4
        J'ai peut-être pas calculé l'angle comme il faut.
        Regardes le projet Fred.
        Touches : ZQSD Déplacement (XY), TG Déplacement vertical (Z), Haut/Bas/Gauche/Droite Déplacement de la caméra.

        (note : la version est un peux plus ancienne :-) hier)

        Merci Fred, je vais essayer d'implémenter ça.

        EDIT (14:40 13/08/2013) : J'ai modifié quelques lignes.
        Quand on appuie sur 'D' le polygone change de forme. C'est sans doute lié au retour du 360°. Il faut que je reformule la coupure.
        Dernière modification par Yarflam, 13 août 2013, 13h43.
        ~ Yarflam ~

        ❉ L'Univers se dirige vers son ultime perfection ❉

        Commentaire


        • #5
          Je ne suis pas investi dans ton projet et je n'ai aucune connaissance en javascript, donc difficile de t'aider plus, j'ai seulement participer à des mathématiques très lointain. Donc c'est même pas du 100%, mais je pense qu'à force tu t'en sortiras, tu n'as pas l'air loin de réussir ce que tu souhaites, donc bon courage et continuation

          Commentaire


          • #6
            J'ai effectué différent test sur la matrice, le diagnostique est clair : il me manque le signe.
            Merci Fred pour ton aide, ta formule me donne bien l'angle mais pas avec le signe (c'est juste pour t'informer ).
            Si quelqu'un s'y connaît un peux dans les produits scalaires, ce serait avec plaisir.
            De mon côté de vais chercher la réponse dans le potage technologique (internet ).

            note: la solution que j'avais présenté, n'était pas bonne du tout.
            Dernière modification par Yarflam, 13 août 2013, 18h14.
            ~ Yarflam ~

            ❉ L'Univers se dirige vers son ultime perfection ❉

            Commentaire


            • #7
              Surprenant que ça ne donne pas le signe, il y a sans doute une erreur dans l'entrée de tes données, si tes coordonnées xa, xb, ya et yb sont des coordonnées entrées avec le bon signe tu dois t'y retrouver au résultat final je suppose.

              Commentaire


              • #8
                Youtube
                Ce n'est pas si facile ...

                Et puis j'ai essayé sans l'afficher graphiquement. De comparer les valeurs avec Geogebra.

                EDIT 12:38 14/08/13 :
                J'ai trouvé le système pour récupérer l'angle. Avec justement le signe des vecteurs normalisés.
                - Projet -
                Le résultat est médiocre, car ma fonction transformant le point 3D en point 2D est incomplet.
                Donc sujet résolu (même si le projet ne l'est pas).
                Dernière modification par Yarflam, 14 août 2013, 11h42.
                ~ Yarflam ~

                ❉ L'Univers se dirige vers son ultime perfection ❉

                Commentaire

                Chargement...
                X