Réponse acceptée !
Salut,
Comme d'hab', je ne suis pas assez competent pour t'aider en programmation. Par contre, je peux te filer un petit coup de main en maths.
Tu cherches l'ensemble des points M (x,y) appartenant au cercle et au segment.
Si M(x,y) appartient au cercle, alors la distance du centre a ce point est R, autrement dit :
(x-cx)^2 + (y-cy)^2 = R^2
Si M appartient au segment AB, alors les vecteurs AM et AB sont colineaires et M entre A et B, c'est-a-dire :
Il existe un nombre k tel que 0 <= k <= 1 et (x-xa) = k * (xb-xa)
(y-ya) = k * (yb-xa)
Donc la solution a ton probleme est la resolution d'un systeme de 3 equations a 3 inconnues, k, x et y :
o (x-cx)^2 + (y-cy)^2 = R^2
o (x-xa) = k * (xb-xa)
o (y-ya) = k * (yb-xa)
En toute rigueur, k est une inconnue. Simplement, sa valeur est sans importance, pourvu qu'il soit compris entre 0 et 1 (c'est-a-dire M pas seulement sur la droite (AB), mais uniquement dans le segment [AB]).
Pour resoudre ce systeme, et surtout pour trouver un algorithme permettant de le resoudre, il y a selon moi deux difficultes :
o Le systeme n'est pas lineaire. La premiere equation fait intervenir des x^2 et y^2...
o Ce systeme d'equation peut avoir deux, une ou pas de solutions...
Je n'ai malheureusement pas plus de temps a te consacrer...
J'espere neanmoins t'avoir aide...
Bon courage,
Tom.
Marin Marais