Dessiner des cercles vides ou pleins en c [Résolu]

Signaler
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014
-
Bonjour à tous,
c'est la première fois que je pose une question sur ce forum, merci d'avance de vos réponses. ;o))
je voudrais dessiner des celcles vides ou coloriés pleins.
comment je fais ? nb : je souhaite me passer d'une interface graphique.
merci encore et bonne prog à tous
Alain
quand on veut on peut

8 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut

Pour dessiner des cercles pleins, c'est très facile, il suffit de reprendre l'équation d'un cercle:
for(i=0;i<100;i++)
  for(j=0;j<100;j++)
    if((i-xc)*(i-xc)+(j-yc)*(j-yc) < R*R)
        //On est à l'intérieur du cercle

Pour ce qui est de tracer un cercle vide, c'est un peu plus compliqué:
doubledouble ytmp,xtmp;
i,x=1,y=0;
double Pas=3.14159/(3*Rayon);
for(i=0;iint)(xtmp*Rayon+ Xoffset),(int)(ytmp*Rayon+Yoffset));
SetPixelInc((int)(-xtmp*Rayon+ Xoffset),(int)(ytmp*Rayon+Yoffset));
SetPixelInc((int)(xtmp*Rayon+ Xoffset),(int)(-ytmp*Rayon+Yoffset));
SetPixelInc((int)(-xtmp*Rayon+ Xoffset),(int)(-ytmp*Rayon+Yoffset));
}

A+
____________________________________________________________________________
Mon site internet :  
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014

hello,
merci beaucoup de m'avoir repondu.
bon, j'ai essayé ton code mais je n'arrive pas à le faire marcher. pour info, voici exectement ce que j'ai saisi :
#include

<stdio.h>#include

<math.h>#define

PI 3.1459
//Salut

//Pour dessiner des cercles pleins, c'est très facile, il suffit de reprendre l'équation d'un cercle:

//for(i=0;i<100;i++)

// for(j=0;j<100;j++)

// if((i-xc)*(i-xc)+(j-yc)*(j-yc) < R*R)

//On est à l'intérieur du cercle//Pour ce qui est de tracer un cercle vide, c'est un peu plus compliqué:

int

main (
void){

double

Rayon=10;
double

ytmp,xtmp;
double

i,x=1,y=0;
double

Pas=3.14159/(3*Rayon);
for

(i=0;i{

xtmp=(x*cos(i)+y*sin(i));

ytmp=(-x*sin(i)+y*cos(i));

SetPixelInc((

int)(xtmp*Rayon+ Xoffset),(
int)(ytmp*Rayon+Yoffset));SetPixelInc((

int)(-xtmp*Rayon+ Xoffset),(
int)(ytmp*Rayon+Yoffset));SetPixelInc((

int)(xtmp*Rayon+ Xoffset),(
int)(-ytmp*Rayon+Yoffset));SetPixelInc((

int)(-xtmp*Rayon+ Xoffset),(
int)(-ytmp*Rayon+Yoffset));}

system(

"pause");}

//A+

fin du code-----------------
voici mes messages d'erreur :
-----------------------
Avertissement 1 warning C4013: 'SetPixelInc' non défini(e) ; extern retournant int pris par défaut c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 24
Erreur 2 error C2065: 'Xoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 24
Erreur 3 error C2065: 'Yoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 24
Erreur 4 error C2065: 'Xoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 25
Erreur 5 error C2065: 'Yoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 25
Erreur 6 error C2065: 'Xoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 26
Erreur 7 error C2065: 'Yoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 26
Erreur 8 error C2065: 'Xoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 27
Erreur 9 error C2065: 'Yoffset' : identificateur non déclaré c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 27
Avertissement 10 warning C4013: 'system' non défini(e) ; extern retournant int pris par défaut c:\documents and settings\admin\mes documents\visual studio 2008\projects\cercles\cercles\main.c 29

OUPS. Aie a ie aie c'est la panique  merci encore.
au fait, ton code, c'est bien du C  c'est pas du CPP
quand on veut on peut, mais à plusieurs on peut plus que seul
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014

merci pour le conseil.
Je suis déjà dans les livres à fond, mais tu as raison, peut-être que je veux aller trop vite.
il me semblait que les foruns étaient destinés à aider ceux qui ont des problèmes et n'étaient pas reservés qu'aux initiés avertis...
je suis allé sur tes 2 sites, mais n'y ai trouvé que tu CPP (avec CMUGraphics) et pas de C. dommage merci

quand on veut on peut
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014

merci, j'avoue que ta réponse est plus sympa que la première. J'avais mis les codes d'erreur juste pour que l'info soit complète et pour te demander si en fait 'Yoffset' par exemple, était juste une variable ou s'il s'agissait d'une instruction non reconnue (car dépendant d'une librairie non installée ou étant une instruction non identifiée car elle était en C++ alors que j'étais en C)
penses-tu qu'il y a un intérêt à continuer à apprendre le C ou qu'il faut passer directement au C++ ?
merci encore
je me suis remis à la prog après 15 ans d'arrêt pour aider mon fils à débuter.Quand on veut on peut, mais c'est pas toujours facile, patience et longueur de temps font plus que force et que rage.
Alain
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Avant de coder, je te conseille tout d'abord de prendre un bon livre sur le C et de t'y plonger. Toutes les erreurs qui sont marqués sont triviales à corriger.
La fonction SetPixelInc
doit être implémenter par toi, tout dépend de ce que tu utilises pour afficher un pixel. Sinon ce code est tiré d'une classe (regarde mon site internet) mais pas besoin de classe pour le faire fonctionner.

A+
____________________________________________________________________________
Mon site internet :  
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Il me semble tout de même que les erreurs précédentes sont assez claire "identificateur non déclaré", déclarer une variable est quand même vraiment la base...

Maintenant concernant les bibliothèques graphique, CMUGraphics est très bien pour débuter même si c'est du cpp. Cependant cette lib est vielle et pas maintenu à jour, c'est un peu galère de l'installer sur VC 2008. Si tu veux quand même essayer prend les sources sur mon site : http://pistol.petesampras.free.fr.

Maintenant si tu veux faire du C pur, je te conseille d'utiliser les API windows. C'est beaucoup moins facile pour débuter mais beaucoup plus puissant. Et en plus il n'y a pas de librairie à ajouter...
Tu trouveras tout ici:
http://www.brunews.com/brunews/download/CP5.zip
et les sources:
http://www.brunews.com/brunews/download/CP5Sources.zip
A+
____________________________________________________________________________
Mon site internet :  
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Désolé si je t'ai paru un peu rude lors de ma réponse ce n'était pas voulu. Mais il y trop de monde sur ce forum qui ne fait pas le moindre effort de recherche personnelle (google ou autre) et cela n'est pas ton cas donc je m'excuse.

Xoffset et Yoffset définissent le centre du cercle. Ce sont donc, deux simples int. Tout comme Rayon.
Ces sont les trois paramètres de cette fonction.

Je pense, et je ne suis pas le seul à le dire, qu'il faut commencer par travailler le C. Ensuite quand toutes les bases seront acquises, tu pourras passer au C++. C'est vraiment important de bien connaitre les bases avant de passer à l'orienter objet.
A+
____________________________________________________________________________
Mon site internet :  
Messages postés
24
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
8 janvier 2014

merci encore de ton aide, je vais essayer de completer le code que tu m'as envoyé jusqu'à ce qu'il marche !!!!
à+ peut être sur un autre sujet

quand on veut on peut