Question

J'ai la question suivante géométrique en 2D:

i ont un point à partir duquel lancer un angle i infini (2D-cône) qui est donnée par une direction et un angle. (Le point et la direction forment un vecteur et à chaque demi-côté de l'angle forme le cône 2D)

Maintenant, je veux vérifier si un autre point en 2D est à l'intérieur de ce cône ou à l'extérieur.

comment cela peut-il être atteint? merci!

Était-ce utile?

La solution

Calculer le vecteur du centre du cône et le point d'interrogation. Normaliser le vecteur d'être de longueur 1, Prendre le vecteur central du cône et normaliser cette ainsi à la longueur de 1.
Maintenant, prenez le produit scalaire entre les vecteurs. Le produit scalaire entre deux vecteurs normalisés est le cosinus de l'angle entre eux. Prenez les arccos (acos dans la plupart des langues) du produit scalaire et vous obtiendrez l'angle. comparer cet angle à l'angle du cône (demi-angle dans la description). si sa partie inférieure, puis pointer en question est à l'intérieur du cône.

Cela fonctionne en 2D et 3D.

Autres conseils

Calculer l'angle de la direction à l'aide de la direction arctg. Soustraire l'origine du point contrôlé. Calculer son angle (encore une fois par l'intermédiaire d'un vecteur arctg normalisé), et vérifier si elle se trouve dans les limites d'angle.

Je dis la meilleure façon est de projeter le point sur la surface 2D perpendiculaire à la direction des cônes. Ensuite, vous calculez la distance entre ce même orthogonal plan et le point. Enfin, vous savez la largeur du cône à cette hauteur, de sorte que vous pouvez voir si le point est en dehors de cette largeur.

Soit le vecteur à partir du point d'origine au point spécifié fait un angle A avec la normale qui passe par le centre. Si l'angle A est inférieur à l'angle de la moitié du cône, il se trouve à l'intérieur d'autre à l'extérieur.

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