2012-11-30 2 views
0

Connaître les sommets d'un triangle 3D et les coordonnées x, y de la projection sur le plan horizontal d'un point E appartenant au triangle. L'angle alpha est également donné, représentant l'angle par rapport au bord AB d'un segment situé sur le même plan du triangle. Je voudrais savoir 3 choses:Angle de sortie et point d'un segment situé sur un triangle en 3D

  • pour une alpha donnée, de quel côté est F
  • quel est l'angle créé par le côté « sortie » avec le segment EF (en considérant toujours le sommet suivant un moyen dans le sens horaire)
  • la longueur EF
  • la longueur du segment BF si BC est le côté de sortie (aiguilles d'une montre)

Ceci est bien ... et je veux voir comment il va effectuer. Merci.

grid http://www.keplero.com/upps/mesh.jpg

Répondre

1
  1. trouver le point E. Tracer une ligne perpendiculaire au plan horizontal, passant par la projection de E. Le point E est l'intersection de cette ligne et du plan sur lequel le triangle se trouve. (si le plan du triangle est perpendiculaire au plan horizontal, vous n'avez pas assez d'informations pour trouver E.)
  2. Effectuez une transformation sur les points A, B, C, E afin qu'ils se trouvent sur le plan horizontal. Utilisez uniquement des rotations et des traductions afin que les angles et les distances soient préservés. Avec cette étape, le problème peut être résolu en seulement deux dimensions, ce qui simplifie les choses.
  3. Tracer un rayon sortant de E, qui a l'angle alpha par rapport à AB.
  4. Pour chacun des AB, BC, CA, déterminer si le rayon s'étendant de E l'intersecte. Le point F est l'intersection du rayon et du segment de droite qu'il coupe. (Si le rayon traverse un sommet du triangle plutôt qu'un bord, vous ne pourrez peut-être pas obtenir de réponses significatives à vos questions concernant le côté "sortie".)
  5. En utilisant la position de F, déterminez les réponses de chacun. de vos points de balle.
  6. En option, effectuer l'inverse de la transformation effectuée à l'étape 2, pour obtenir la position réelle de F.
+0

Je considérais aussi mettre tout en 2D, mais il faut beaucoup de trigonométrie et avant de passer par elle Je me demandais si je pouvais le faire directement sans changer le système de coordonnées. Je voudrais éviter toute étape inutile pour des raisons de performance –

+0

J'ai préféré mettre les choses dans 2d, car je m'attendais à ce que l'implémentation de l'algorithme utilise des variables à précision limitée. Si vous faites le problème en 3D, et que les équations décrivant les segments linéaires et les rayons ont une marge d'erreur, alors vous aurez besoin d'un algorithme de "logique floue" pour trouver des intersections. Quelque chose qui pourrait dire, "Ray E n'a pas croisé quoi que ce soit, mais il est venu à l'intérieur de 0,00001 unités de segment BC, donc c'est assez proche". Si vous le faites en 2D, vous pouvez trouver des intersections avec un algorithme non flou, donc je crois que c'est plus simple dans l'ensemble. – Kevin

Questions connexes