Je travaille avec une 3D qui a une propriété de type Vector3D appelée FrontDirection. Cet objet est mis en rotation comme suit:WPF - Récupère l'angle en degrés d'un Vector3D vu de dessus
var rotate = new AxisAngleRotation3D(new Vector3D(0, 1, 0), deltaAngleInDegrees);
var transform = new RotateTransform3D(rotate);
my3DObject.FrontDirection = transform.Transform(my3DObject.FrontDirection);
Après une certaine quantité arbitraire de rotation, je voudrais déterminer l'angle de l'objet en vue de dessus. Je m'attendrais à ce que la valeur varie entre [0, 360). Le plus proche que je peux obtenir est la suivante:
var angle = Vector3D.AngleBetween(new Vector3D(1, 0, 1), my3DObject.FrontDirection);
Cependant, tout en faisant tourner l'objet dans un cercle complet de l'angle varie de 0 à 180, puis retombe à 0. Il semble que AngleBetween donne la distance entre la vecteurs sans tenir compte de la direction. Quel est un bon moyen de calculer l'angle?