Dessiner des cercles vides ou pleins en c

Résolu
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014 - 5 mai 2009 à 17:18
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014 - 6 mai 2009 à 14:49
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

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 mai 2009 à 08:30
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 :  
3
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014
6 mai 2009 à 11:21
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
3
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014
6 mai 2009 à 13:30
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
3
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014
6 mai 2009 à 14:12
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
3

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

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 mai 2009 à 13:07
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 :  
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 mai 2009 à 13:57
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 :  
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
6 mai 2009 à 14:39
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 :  
0
cs_luckyalan Messages postés 24 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 8 janvier 2014
6 mai 2009 à 14:49
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
0
Rejoignez-nous