Resoudre des équation de cercle

inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007 - 14 janv. 2007 à 19:05
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 16 janv. 2007 à 16:46
slt ts le monde, alors j'ai besoin de petite aide,alors je vais essayer d'étre clair, donc je programme en C++, j'ai dans un tableau un nuage de point ( avec les coordonné x,y), et je vouddrais définir si ces point appartienne à un cercle ( dont je connais le rayon), si oui définir le centre.

Enfait j'ai un télémétre laser, qui scanne une scéne, et je voudrai reconnaitre certain objet dont un cercle, et je voudrai connaitre ça position dans l'espace ( d'ou le calcul du centre ), est ce que qu'elqu'un peut m'aider?
A voir également:

11 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
14 janv. 2007 à 20:09
De manière formelle il suffit de trois points distincts pour définir un cercle de façon unique :
si (x1,y1), (x2,y2), (x3,y3) sont les coordonnées de ces  points alors les coordonnées du centre du cercle (x,y) vérifient l'équation:
(x-x1)^2+(y-y1)^2=(x-x2)^2+(y-y2)^2=(x-x3)^2+(y-y3)^2=R^2
et il n'y a qu'à résoudre cette équation pour déterminer x,y.
Puis il faut vérifier que les autres points sont à même distance du centre:(x-x4)^2+(y-y4)^2=R^2...
Cependant, vu les additions d'erreurs dues aux arrondis et au calcul flottant, il te faudra adapter l'algorithme pour en tenir compte (définitions d'écarts admissibles etc...) sous peine de mauvais fonctionnement.
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
14 janv. 2007 à 20:51
merci pour ton aide, mais àa je le savais, le pb c comment résoudre c trois équatoin? je ne vois vraiment pas l'algo a faire...
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
14 janv. 2007 à 22:10
Tu peux aussi calculer la distance du point X(x,y) par rapport au Centre du centre C(xc, yc)
sqrt((x-xc)(x-xc) + (y-yc)(y-yc)) < R => dans le cercle                                                    R> sur le cercle
                                                   > R => en dehors du cercle
++
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
14 janv. 2007 à 22:35
Suffit de développer et tu retombes sur un système linéaire à 2 inconnues niveau 2nde....
Soit:
x1^2+y1^2-2(x1*x+y1*y)=x2^2+y2^2-2(x2*x+y2*y)=x3^2+y3^2-2(x3*x+y3*y)
Y a plus qu'à résoudre ce truc mais je mettrai pas la solution : d'abord c'est enfantin et en plus c'est long à taper.
Au passage on peut vérifier que le déterminant n'est pas nul sinon il faut changer les points (il y en a 2 qui coïncident).
laurent1024->c'est exactement ce que j'ai proposé sauf qu'il vaut mieux mettre au carré pour virer la racine, un calcul de moins.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 janv. 2007 à 01:39
Oui mais son pb de base, c'est qu'il a un nuage de point, pas 3 ! Donc c'est bcp plus compliqué, a mon avis, ca mène sur des statistiques. Et personnellement je vois du tout comment faire.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
15 janv. 2007 à 09:54
luthor->il veut vérifier que tous les points appartiennent à un cercle : il suffit de définir un cercle avec trois points et de vérifier que les autres sont dessus.
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
15 janv. 2007 à 10:15
Si c'est un nuage de points, il faut passer par les statisitstiques et introduire l'erreur admise pour dire que le point  appartient ou non à un cecle. Il faut passer par les moindres carrés, ou bien utiliser un algorithme de résolution tel que le Marquardt ( le code est disponible sur numerical recipes in C++, il doit y avoir aussi les algo pour les statisitiques).
On utilise les moindres carrés par seulement pour les droites, mais pour n'importe quelle courbe dont on connait l'équation et dont il faut déterminer les paramètres.
C'est l'approche que j'adopterai, surtout qu'il s'agit de mesures qui ont une certaine incertitude

louis14
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 janv. 2007 à 11:48
juj12 => non tu peux pas faire comme ca, car tes points sur prends lesquels ? Faut pas que ca devienne du bricolage, encore que ca dépend du contexte dans lequel il a besoin de faire ca. Si c'est un truc artisanal, ca ira en prenant des points empiriquement, mais c'est tout sauf rigoureux.
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
15 janv. 2007 à 20:50
merci a vous ts, tu sait juj au point au je suis un truc qui marche méme si c'est du bricolage je prend... mais ça marche comme els moindre carré? il y a un code sur le forum?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
15 janv. 2007 à 21:01
Il y a une autres technique pour trouver les cercles, mais je sais pas si  tu peux l'utiliser. Normalement c'est pour la détection de cercle dans une image (donc avec des coordonnées entieres). Pour tous les points xi (qui a priori sont sur un cercle) tu trace un cercle de centre xi et de rayon R et tu dessine ton cercle sur une image noire de la meme taille (tu rajout +1 sur les pixels correspondant au cercle). Tu fais ca pour tous les points que tu as. A la fin le pixel qui a la plus grande valeur, c'est le centre du cercle.

++
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 janv. 2007 à 16:46
Ca vient de me revenir en tete, mais tu peux aussi utiliser le produit convolution. Tu donnes a tes points une petite épaisseur pour qu'il se joigne les uns les autres. Tu construis un cercle de la taille connue avec une petite épaisseur et tu convolues les deux. Tu prends le max des produits et ca te donnera le centre du cercle. Le seul pb, c'est un peu lourd en calcul.
0
Rejoignez-nous