Signé de l'angle entre les deux vecteurs 3D avec la même origine dans le même plan

Ce dont j'ai besoin est une signature de l'angle de rotation entre deux vecteurs, Va et Vb située dans le même plan 3D et ayant la même origine, sachant que:

  1. L'avion contatining les deux vecteurs est arbitraire et n'est pas parallèle à XY ou tout autre du cardinal avions
  2. Vn - un plan normal
  3. Les deux vecteurs le long de la normale ont la même origine O = { 0, 0, 0 }
  4. Va - est une référence pour la mesure de la main gauche rotation à Vn

L'angle doit être mesuré de manière si le plan serait plan XY Va se présenterait pour l'axe X de l'unité de vecteur de.

Je suppose que je devrais effectuer une sorte d'espace de coordonnées de la transformation à l'aide de la Va comme l'axe des X et le produit vectoriel de Vb Vn que l'axe des Y, et puis juste à l'aide de certaines 2d méthode comme avec atan2() ou quelque chose. Des idées? Les formules?

  • Et Oui, je sais à propos de "acos( Av . Vb" façon mais en raison de la nature de cosinus donne toujours le résultat positif.
  • Pouvez-vous expliquer en Va? Est parallèle au Vn?
  • Vn est le plan de vecteur normal ici, donc il est perpendiculaire à la fois Va et Vb - et Vn est d'abord fait connaître
  • La tâche en question est simplifiée. Dans ce cas particulier Vn est le seul vecteur qui a été à l'origine connu avec la matrice de rotation R. Av est alors calculé comme un produit croisé de Vn et l'un des cardinaux de la base de vecteurs: Va = normalize( Vn x {0,1,0} );
  • Solution - peut être simplifié un peu si les vecteurs sont normalisés donc pas de division nécessaire en premier lieu.
  • Vous n'avez pas besoin de diviser par (|Va||Vb|) pour la sin et cos. La façon atan2 œuvres les dénominateurs annuler.
  • Qu'est-ce que Vn ici Plan normal signifie?