Question

J'espère que c'est l'endroit approprié pour poser cette question qui est le même que celui-ci , mais exprimé en mathématiques pures au lieu de graphique (au moins je l'espère, je traduis correctement le problème de mathématiques).

Considérant:

  • deux vecteurs qui sont orthogonaux: Up (ux, uy, uz) et Look (Ix, Iy, Iz)
  • un plan P qui est perpendiculaire à Look (donc y compris Up)
  • Y1 qui est la projection de Y (axe vertical) le long regard sur P

Question: quelle est la valeur de l'angle entre Y1 et Up

?

Comme les mathématiciens conviendront, cela est une question fondamentale, mais je l'ai été me gratter la tête pendant au moins deux semaines sans être en mesure de visualiser comment projeter Y sur P ... peut-être trop vieux pour trouver des solutions à exercices scolaires.

Je cherche la solution trigonométrique, pas une solution à l'aide d'une matrice. Merci.

Modifier : J'ai trouvé que je devais déterminer le signe de l'angle, par rapport à un axe de rotation qui devait être Look. J'ai posté le code final sur ma question liée (voir le lien ci-dessus). Merci à tous ceux qui ont aidé. Je vous remercie de votre temps.

Était-ce utile?

La solution

Je fais tout cela sur papier. J'espère que son droit.

Assumons et regarder sont normalisées, qui est, longueur 1. Soit s dire que le plan P contient l'origine, et L est son état normal. Y est (0, 1, 0)

Pour projeter Y sur P, trouver sa distance à P ...

d = Y dot L = ly

... puis à l'échelle la normale par -d pour obtenir le Y1 (qui est la projection de Y sur P)

Y1 = (lx * ly, ly * ly, lz * ly)

Maintenant normaliser Y1, qui est, à l'échelle par (1 / longueur). Si sa longueur était de 0 alors vous êtes hors de la chance.

Le produit scalaire de Y1 et Up = le cosinus de l'angle. Donc,

angle = acos(Y1 dot Up)

Autres conseils

  • deux vecteurs qui sont orthogonaux: Up (ux, uy, uz) et Look (Ix, Iy, Iz)
  • un plan P qui est perpendiculaire à Look (donc y compris Up)
  • Y1 qui est la projection de Y (axe vertical) le long regard sur P

Je suppose et regarder sont des vecteurs unitaires. Soit Y = (0,1,0).
trouver de LET Y1.

Y1 = Y - (Y * Look) * Rechercher Y1 = Y - Regardez ly * Y1 = (ly lx, 1 - ment ment, ly * LZ)

Notez que Y1 sera (0,0,0) lorsque Look est (0,1,0) ou (0, -1,0).

Comme Detmar dit, trouver l'angle entre Y1 et Up en normalisant Y1 et trouver les arccos de Y1 * Up (où * est le produit scalaire)

Ceci est un problème relativement simple en utilisant les mathématiques de vecteur. Utilisez le pour la projection de vecteur pour obtenir Y1, le trigonométrique équation pour le produit scalaire pour obtenir l'angle entre Y1 et Up

Cette équation serait assez facile à mettre en œuvre vous dans à peu près toutes les langues, mais si vous demandez ce genre de question que vous pourriez être l'intention de faire plus lourds mathématiques vecteur, dans ce cas, je vous suggère d'essayer de trouver une bibliothèque tiers.

Vous devez savoir sur les vecteurs dans l'espace 3D. Je pense qu'une compréhension fondamentale de ceux-ci, en particulier des points et des produits croisés, vous trier. Cherchez un manuel élémentaire de vecteurs.

  

deux vecteurs qui sont orthogonaux: Up   (Ux, uy, uz) et Look (Ix, Iy, Iz)

vecteurs Orthogonal ont un produit scalaire zéro.

  

un plan P qui est perpendiculaire à   Look (donc y compris vers le haut)

Si vous prenez le produit croisé de Look en haut, vous obtiendrez le troisième vecteur qui, avec le haut, définit le plan perpendiculaire à Look.

  

Y1 qui est la projection de Y   (Axe vertical) le long regard sur P

Je ne sais pas ce que vous voulez en venir, mais le produit scalaire de tout vecteur avec regard vous donne l'ampleur de sa composante dans la direction de Look.

Si Y = (0,1,0) Alors

Y1 = (ly lx, 1 - ment ment, ly * LZ)

| Y1 | = Sqrt (Y1X ^ 2 + Y1y ^ 2 + Y1z ^ 2)

| Up | = Sqrt (Upx ^ 2 + UPY ^ 2 + Upz ^ 2)

Banque Angle = (Y1X Upx + Y1y UPY + Y1z Upz) / (| Y1 | | Up |)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top