Intersection de cercle de segment de ligne
Je suis en train d'essayer de déterminer le moment où un segment de ligne d'intersection d'un cercle. Par exemple, étant donné un point entre P0 et P3 (Et aussi en supposant que vous savez le rayon), ce qui est la méthode la plus simple pour déterminer P3?
source d'informationauteur dtuckernet
Vous devez vous connecter pour publier un commentaire.
Vous avez un système d'équations. Le cercle est défini par:
x^2 + y^2 = r^2
. La ligne est définie pary = y0 + [(y1 - y0) /(x1 - x0)]·(x - x0)
. Remplacer la deuxième à la première, vous obtenezx^2 + (y0 + [(y1 - y0) /(x1 - x0)]·(x - x0))^2 = r^2
. Résoudre ce et vous obtiendrez 0-2 valeurs de x. Les rebrancher dans l'équation pour obtenir vos valeurs de y.Généralement,
En pseudo-code,
À partir du centre du cercle et le rayon que vous pouvez écrire l'équation décrivant le cercle.
À partir de deux points P0 et P1, vous pouvez écrire l'équation décrivant la ligne.
Vous avez donc 2 équations à 2 inconnues, que vous pouvez résoudre par substitution.
L'équation du cercle est:
L'équation de cette droite est:
De brancher le 2ème équation dans la première donne:
De même, vous pouvez trouver que
Le point (x,y) est le point d'intersection entre la ligne et le cercle, (x,y) est votre réponse.
Optez pour ce code..c'est un gain de temps
CODE MATLAB
fonction [ drapeau] = circleLineSegmentIntersection2(Ax, Ay, Bx, By, Cx, Cy, R)
fin