9
votes

Géométrie 2D: Comment vérifier si un point est à l'intérieur d'un angle

J'ai le problème géométrique suivant en 2D:

J'ai un point à partir de laquelle je jette un angle infini (cône 2D) qui est donné par une direction et un angle. (Le point et la direction forment un vecteur et de chaque moitié de la moitié 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!


4 commentaires

La langue n'aurait pas d'importance; Je crois que c'est l'algorithme que l'OP recherche.


Et oui, c'est un bon point Daniel, qu'est-ce qui est avec le "point en 2d"?


Oui, la langue n'a pas d'importance, c'est l'algorithme que je cherche. Ce serait même d'accord, si vous le décrivez en mots. Désolé si un cône est 3D, je ne sais pas quel mot anglais à utiliser à la place.


Le cône est parfaitement correct pour 2D aussi. Cependant, vous pouvez également utiliser un "secteur" pour 2D.


4 Réponses :


15
votes

Calculez le vecteur du centre du cône au point de requête. Normaliser le vecteur d'être de longueur 1, prenez le vecteur central du cône et normaliser cela aussi à la longueur de 1.
Prenez maintenant le produit DOT entre les vecteurs. Le produit DOT entre deux vecteurs normalisés est le cosinus de l'angle entre eux. Prenez les arccos ( ACOS dans la plupart des langues) du produit DOT et vous obtiendrez l'angle. Comparez cet angle à l'angle du cône (demi-angle de votre description). Si c'est inférieur, le point en question est à l'intérieur du cône.

Cela fonctionne en 2D et 3D.


2 commentaires

Merci, c'est ce que j'ai fait tout le temps, mais je ne pensais pas que cela est fini, car je ne me suis pas rendu compte là où la position réelle du point est prise en compte. maintenant ça a du sens. Merci!


Solution brillante. Notez que vous pouvez précalculer le "cosinus de la moitié de la cône angie", puis il suffit d'utiliser une comparaison "si moins que" entre le résultat du produit DOT et que la valeur de la cosinus, pas besoin d'arccos - à la suite du résultat de la Le produit DOT est certain bien sûr, pour éviter de laisser entrer dans un point "derrière" le cône. Ceci est utile si vous vérifiez plusieurs points contre le même cône.



1
votes

Calculez l'angle de la direction à l'aide de l'arct de la direction. Axétrage de l'origine du point vérifié. Calculez son angle (à nouveau via l'arct d'un vecteur normalisé) et vérifiez s'il réside dans les limites d'angle.


0 commentaires

1
votes

Je dirais que le meilleur moyen est de projeter le point sur la surface 2D perpendiculaire à la direction des cônes. Ensuite, vous calculez la distance othogonale entre le même plan et le point. Enfin, vous connaissez la largeur du cône à cette hauteur, vous pouvez donc voir si le point est à l'extérieur de cette largeur.


0 commentaires

1
votes

Laisser le vecteur du point d'origine au point spécifié fait un angle A avec la normale qui traverse le centre. Si l'angle A est inférieur au demi-angle du cône, il se trouve à l'intérieur d'autre.


0 commentaires