2010-09-14 18 views
2

Si j'ai calculé un point d'intersection entre un segment de ligne et un cercle, comment puis-je savoir si ce point d'intersection se trouve sur un segment du cercle? J'ai les équations pour dire si un segment de droite coupe ou non le cercle, et j'ai aussi le point d'intersection sur ce cercle, mais ce que je dois savoir, c'est si ce point de collision sur le cercle se trouve ou non dans le cercle. les limites d'un segment arg spécifique de ce cercle. J'ai les extrémités du segment d'arc, le centre du cercle & et le point de collision.Calculer la collision de points et de segments de cercle

+0

Essayez aussi http://math.stackexchange.com. – kennytm

Répondre

1

Transformez le point d'intersection en polar coordinates autour du centre et comparez les angles.

+0

Je n'ai aucun angle. Les seules données que je reçois sont les deux extrémités de l'arc. –

+0

@Scienceprodigy vous pouvez trouver les angles en utilisant le point central du cercle et les points d'arc. Vous voudrez choisir un axe de référence pour les angles (classiquement l'axe des x) et choisir des choses comme si l'anti-horaire ou le sens des aiguilles d'une montre augmente ou diminue l'angle. –

0

Comme alternative à l'idée de Dario (qui devrait fonctionner aussi bien), vous pouvez:

  1. Calculer les distances entre le point d'intersection et les extrémités de l'arc (appelé intdist1 et intdist2). Calculer la distance entre les extrémités de l'arc (arcdist).
  2. Si l'arc est inférieur à la moitié du cercle (couvre moins de 180 degrés), alors vous savez si le point est dans l'arc si intdist1 et intdist2 sont tous deux inférieurs à arcdist. Sinon, si l'arc est supérieur à la moitié du cercle (couvre plus de 180 degrés), alors vous savez si le point est dans l'arc si intdist1 ou intdist2 sont supérieurs à arcdist.

J'imagine, puisque vous n'avez pas spécifié autrement, que l'arc entre les points d'extrémité va très vite. Dans ce cas, vous n'avez pas à vous soucier de l'étape 4 ci-dessus.

La méthode échoue cependant si vous utilisez un arc qui couvre exactement 180 degrés du cercle. Dans ce cas, vous pourriez casser l'arc de 180 degrés en arcs de 90 degrés et vérifier les deux, je suppose.

Aussi, vous pouvez bien sûr utiliser le carré de la distance pour comparer ces distances pour vous sauver la racine carrée. De plus, cette méthode devrait être plus rapide que le calcul des angles car ceux-ci impliquent l'utilisation de cosinus inverses coûteux.