2017-07-04 2 views
0

Début de ligne (jaune) et les axes sont à [xc,yc,zc]Projections Angle de la ligne dans l'espace

Fin de la ligne est à [xp,yp,zc].

a, b, c sont les angles que fait la ligne dans l'espace. Ce dont j'ai besoin, ce sont les angles que les projections de la ligne (ligne noire) créent sur les plans xy, yz et xz.

  • A_y_to_z: Angle de ligne projeté de l'axe y à l'axe z sur le plan xz.
  • A_z_to_x: Angle de z à l'axe x sur le plan zx.
  • A_x_to_y: Angle entre les axes x et y dans le plan xy.

enter image description here

code d'écriture sur Matlab

+0

Qu'avez-vous essayé jusqu'à présent? –

+0

A_x_to_y = atan (y/x). Lisez quelque part ceci et essayé. Mais ce n'est pas correct. – isifzade

+0

@ m7913d J'ai essayé sur un autre navigateur, il est visible. Êtes-vous sûr de cela? – isifzade

Répondre

1

On peut calculer l'angle de projection à un plan quelconque par:

  1. Obtention de la direction de la ligne, d = (xp - xc, yp - yc, zp - zc)

  2. Normalisation d

  3. Calcul de la produit scalaire avec la normale de l'avion, dot(d, n) = d.x * n.x + d.y * n.y + d.z * n.z

  4. Calcul de l'angle par rapport à la normale par a = acos(dot(d, n))

  5. Enfin l'obtention de l'angle par rapport au plan en prenant b = 90 - a (en supposant que les unités en degrés - NB la plupart des fonctions de la bibliothèque mathématique utilisent des radians)

Cas particulier: si dot(d, n) < 0, l'angle a sera supérieur à 90 degrés. Dans ce cas, si vous voulez seulement l'angle aigu, faites b = a - 90 au lieu de 90 - a.

par exemple. Pour calculer l'angle par rapport au plan xy, utilisez n = (0, 0, 1), c'est-à-dire l'axe z, qui est la normale à ce plan.