Bonjour,
Je suis en train de réaliser un petit programme pour un logiciel de dessin (autocad).
Pour ce programme il me faut une fonction qui puisse me trouver l'intersection entre un cercle et une ligne.
On connait toutes les inforamtions sur les deux objets: rayon, point de centre, etc..
Je suis arrivé à l'equation suivant :
r:rayon du cercle
py: abscisse du centre du cercle
px: ordonné du centre du cercle
y=ax+b: equation de la droite
y=(r²-(x-px)²)+py: equation du cercle de centre p
et l'equation finale
0=(-x²+2*px*x+r²-px²)-a*x-b+py
c'est là que je bloque, je n'arrive pas à extraire les deux racines de cette equation.
Si quelqu'un aurait une idée je lui en serait très reconnaissant.
Merci
Je renomme tes variables px = i et py = j pour faciliter les manipulations
y=(r²-(x-i)²)+j
peut etre ramener sous la forme (x-i)2 + (y-j)2 = r2
ou
x2 - 2xi + i2 + y2 - 2yj + j2 = r2
Donc ensuite on remplace y par la droite y = ax+b
x2 - 2xi + i2 + (ax+b)2 - 2(ax+b)j + j2 = r2
x2 - 2xi + i2 + a2x2 + 2abx + b2 - 2axj - 2bj + j2 = r2
(1 + a2)x2 + (-2i + 2ab - 2aj)x + (i2 + b2 - 2bj + j2 - r2) = 0
Et maintenant tu as une équation polynomiale de niveau habituelle, tu n'as qu'à appliquer l'équation pour résoudre des équations d'ordre 2 et obtenir tes 2 racines. Bonne chance
Merci beaucoup Myka, pour ta reponse
Je n'avais pas pensé à procéder de cette façon.
Avec centre du cercle de coordonnées (p;q)
Cercle: (x-p)²+(y-q)² = r²
Droite y = ax+b
(x-p)² + (ax+b-q)² = r²
x²-2px+p² + a²x²+b²+q²+2abx-2aqx-2bq-r²= 0
x²(1+a²)-2x(p-ab+aq)+p²+b²+q²-2bq-r² = 0
x = (p+2ab+2aq) +/- V((p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²)) (avec V pour racine carrée).
a) si (p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²) < 0, il n'y a pas de solution donc pas de points de contact.
b) si (p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²) = 0, il y a un seul point de contact (la droite est tangente au cercle).
c) si (p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²) > 0, il y a deux points de contact.
Les points sont
a)
abscisse : x = (p+2ab+2aq) - V((p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²))
et ordonnée: y = a[(p+2ab+2aq) - V((p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²))] + b
b)
abscisse : x = (p+2ab+2aq) + V((p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²))
et ordonnée: y = a[(p+2ab+2aq) + V((p-2ab+2aq)²-(1+a²)(b²-2bq+p²+q²-r²))] + b
-----
Sauf distraction.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :