begin process at 2012 05 29 05:47:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

faire un algorithme de débutant


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

faire un algorithme de débutant

jeudi 18 mars 2004 à 09:41:49 | faire un algorithme de débutant

momo_1


Aider moi à faire un algo pour calculer le barycentre d'un cercle : le centre en gros.
jeudi 18 mars 2004 à 13:00:49 | Re : faire un algorithme de débutant

ymca2003

D'accord mais avec quoi comme données initiales ?
jeudi 18 mars 2004 à 14:26:19 | Re : faire un algorithme de débutant

momo_1

j'ai un ensemble de pixel au départ.
jeudi 18 mars 2004 à 15:06:23 | Re : faire un algorithme de débutant

vecchio56

Administrateur CodeS-SourceS
je sais pas trop mais je dirais le point(x0, y0) avec

x0= somme(xi)/n pour chacun des n points du cercle
y0= somme(yi)/n pour chacun des n points du cercle

vraiment très simple a écrire en C si c'est bien de cela qu'il s'agit
jeudi 18 mars 2004 à 19:05:45 | Re : faire un algorithme de débutant

MetalDwarf


Ba c est bien le calcul d un isobarycentre cette formule donc ca doit marcher...
jeudi 18 mars 2004 à 19:35:32 | Re : faire un algorithme de débutant

ymca2003

vecchio56 :
cette formule ne marche que si les points utilisés pour le calculs sont bien répartis sur le cercle.

méthode à partir de 3 points non alignés :


#include <stdio.h>
#include <math.h>

//*******************************************************************
// équation d'un cercle de centre (x0,y0) et de rayon R :
// (x-x0)² + (y-y0)² = R²
//
// avec 3 point A, B et C non alignés, on peut trouver le
// cercle passant par ces 3 points:
//
// les 3 équations de base (développées) :
// (1) xA² + x0² - 2*xA*x0 + yA² + y0² - 2*yA*y0 = R²
// (2) xB² + x0² - 2*xB*x0 + yB² + y0² - 2*yB*y0 = R²
// (3) xC² + x0² - 2*xC*x0 + yC² + y0² - 2*yC*y0 = R²
//
// on réalise (2)' = (2)-(1) et (3)' = (3)-(1)
// après simplification et réarrangement :
// (2)' 2*x0*(xA-xB) + 2*y0*(yA-yB) = xA² - xB² + yA² - yB²
// (3)' 2*x0*(xA-xC) + 2*y0*(yA-yC) = xA² - xC² + yA² - yC²
//
// (2)' A*x0 + B*y0 = C
// (3)' D*x0 + E*y0 = F
//
//
// système de 2 équations à 2 inconnues, calcul du déterminant
// (si nul, le système n'a pas de solution unique et on n'a pas
// affaire à un cercle) :
// det = A*E - B*D
//
// les solutions sont :
// x0 = (EC-BF)/det
// y0 = (AF-DC)/det
//
// le rayon s'obtient ensuite :
// R = sqrt( (xA-x0)² + (yA-y0)² )
//*******************************************************************



int main(int argc, char* argv[])
{
// les 3 points initiaux (cercle de centre (2,3) et de rayon 4,
// correspondant à des angles de 60°, 150° et 225°)
double xA = 4.0000, yA = 6.4641;
double xB = -1.4641, yB = 5.0000;
double xC = -0.8284, yC = 0.1716;

// calcul de A, B, C, D, E, F et det
double A = 2*(xA-xB);
double B = 2*(yA-yB);
double C = xA*xA - xB*xB + yA*yA - yB*yB;
double D = 2*(xA-xC);
double E = 2*(yA-yC);
double F = xA*xA - xC*xC + yA*yA - yC*yC;
double det = A*E - B*D;
printf("A = %lf, B = %lf, C = %lf\r\n", A, B, C);
printf("D = %lf, E = %lf, F = %lf\r\n", D, E, F);
printf("det = %lf\r\n", det);
if(det == 0)
{
printf("det = 0, ce n'est pas un cercle\r\n");
return 0;
}

// calcul de x0 et y0
double x0 = (E*C-B*F)/det;
double y0 = (A*F-D*C)/det;
printf("x0 = %lf\r\n", x0);
printf("y0 = %lf\r\n", y0);

// calcul de R
double R = sqrt( (xA-x0)*(xA-x0) + (yA-y0)*(yA-y0) );
printf("R = %lf\r\n", R);
return 0;
}



Cette discussion est classée dans : débutant, algorithme


Répondre à ce message

Sujets en rapport avec ce message

débutant butant... [ par grboss ] Avec Dev C++, des programmes bidons ne fonctionnent pas, car ils utilisent la fonction getch(); par exemple.avec turbo c++, ca passe, mais, il y a une Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem Algorithme de compression STAR amélioré [ par hi_vivie2 ] Bonjour à tous,Je dois réaliser de manière urgente l'implémentation en java de l'algorithme de compression STAR amélioré appliqué aux images en mouvem débutant MFC : pb avec editbox multiline [ par robby ] bonjour,J'aimerais savoir comment faire pour rajouter des lignes dans une editbox multiline sans récupérer à chaque fois l'ancien contenu parce que mo un programme à creer [ par yoyo ] je dois creer un programme permettant d trouver les nombres premiers.l'algorithme est donné, et il utilise des tableaux dont les cases sont remplies p débutant MFC : comment faire pour "enable/disable" des contrôles [ par robby ] Bonjour!J'ai vu qu'en MFC certaines API ont une autre syntaxe et je n'arrive pas à trouver comment on peut activer/ désactiver un contrôle.Avant je f Est-ce seulement moi ou il y a des sources dont on se passerait volontier [ par MeltedMind ] Je me demande si je suis le seul débile à croire ça ou bien si il y a de nombreux sources qui laissent à désirer. Les calculatrices de XPand, Affiche Je uis un débutant en c++ quel livre me conseillez vous? [ par Youyou0214 ] Bonjour à tout le monde,Je suis un débutent en C++ est je voudrais savoir quel livre pourrais m'apprendre les bases du C++.Merci Probleme de Débutant [ par Dorgendubal ] Hello à tous,j'ai déjà programmé en C++ et même avec des envirronements graphiques (comme QT sous linux) mais jamais avec Visual C++.Alors j'ai un pro kestion de débutant : afficher le numéro des lignes [ par pas2nom ] Salut=)Bon, ma question concerne un truc tou bête, mais qui est bien contraigant lorsqu'on a 206 lignes de code et qu'on à une erreur à la ligne 92.Do


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales