Bonjour,
Nous venons de voir en cours l'équation d'un cercle : (x-a)^2+(x-b)^2=R^2 avec R = rayon et centre O(a,b).
J'aimerais savoir s''il est possible de faire un algorithme qui, après que j'ai rentré a et b, determinerai les coordonnées des points (x,y).
Merci d'avance pour vos réponses
Bonne journée
Bonjour,
Un cercle est constitué d'une infinité de points. Un algorithme qui voudrait donc calculer toutes leurs coordonnées mettrait un temps infini à tourner. Par contre, il est possible d'imaginer un algorithme qui donnerait un nombre fini de coordonnées (ce nombre pouvant être spécifié par l'utilisateur). Ainsi pour une série de x donnés (intelligemment choisis), on pourrait calculer les y correspondants. A noter qu'il faudrait également indiquer le rayon du cercle.
Mes explications sont-elles suffisamment claires ?
Cordialement.
Merci, mais en donnant juste le rayon (et a et b) serait-il possible de lui (j'entends par là l'algorithme) faire determiner un nombre de points donnés ?
Oui, tout à fait. Prenons un cas pratique, par exemple le cercle d'équation (x-1)2+(y-1)2 = 4 (donc a = b = 1 et R = 2). Disons que l'on souhaite déterminer les coordonnées correspondant à 5 abscisses. On prendra donc les abscisses x1 = -1, x2 = 0, x3 = 1, x4 = 1 et x5 = 2 (qui correspondent à des points du cercle; il suffit de le tracer pour le vérifier).
On résout alors, pour x1: (-1-1)2 + (y-1)2 = 4, ce qui donne pour seule solution y = 1. Donc le premier point est A(-1;1).
Ensuite, on résout pour x2: (0-1)2 + (y-1)2 = 4, ce qui donne y = 3 + 1 ou y = -
3 + 1. Donc les deux points suivants sont B(0;
3 + 1) et C(0;-
3 + 1).
Et ainsi de duite ...
C'est l'algorithme qui trouvera les abscisses. Si le centre du cercle est (a;b) et son rayon R, alors les x "vont se trouver" de part et d'autre du centre, à la distance R. Autrement dit, il faudra les prendre dans l'intervalle [a-R;a+R] ([-1;3] dans notre exemple). L'algorithme divisera alors cet intervalle en autant de points que demandés.
Par calcul ! Dans notre exemple, il considérera l'intervalle [1-2;1+2] soit [-1;3]. Ensuite, dans une boucle à 5 itérations, il divisera cet intervalle en 5 parties en partant de -1 et en ajoutant à chaque itération 1 (soit la largeur de l'intervalle plus un divisée par 5: [(3-(-1)) +1]/5 = 1). Ceci donnera pour les x: -1,0,1,2,3.
Bonjour,
J'arrive à l'algorithme (qui est probablement faux) :
Variables : x, y, a, b, O, R, I, n, p, u
Début de l'algorithme :
Lire O(a, b)
Lire R
R prend la valeur R = racine de (x-a)^2+(y-b)^2
I = [a-R, a+R]
x appartient a I
Lire n
p prend la valeur [(a+R)-(a-R)+1]/n
Pour u allant de 0 a n de p en p
x prend la valeur (a-R)+p
Calculer y
Placer (x, y)
Fin Pour
Fin de l'algorithme
Pourriez-vous m'aider à le corriger svp
Cordialement
Bonsoir,
C'est presque bon. Je le modifierais de la manière suivante (j'ai rajouté des commentaires avec #):
Variables : x, y1, y2, a, b, R, n, p, u
Début de l'algorithme :
Lire a # On lit les coordonnées du centre séparément (en deux instructions "Lire")
Lire b
Lire R
Lire n
p prend la valeur [(a+R)-(a-R)+1]/n # On pourrait simplifier un peu le calcul en écrivant [2R+1]/n
x prend la valeur a-R # on initialise x avant la boucle car on souhaite afficher le point d'abscisse a-R
Pour u allant de 0 a n # Le pas sera de 1 puisque "x prend la valeur x+p" contient déjà l'information du pas
y1 prend la valeur (b + racine de R^2 - (x-a)^2) # On considère les deux ordonnées
y2 prend la valeur -(b + racine de R^2 - (x-a)^2)
Afficher(x, y1)
Afficher(x, y2)
x prend la valeur x+p # On incrémente x après l'affichage car on souhaite afficher le point d'abscisse a-R
Fin Pour
Fin de l'algorithme
Et voilà !
Cordialement.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :