begin process at 2012 02 11 12:30:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Tracer un cercle


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

Tracer un cercle

lundi 6 octobre 2008 à 13:37:28 | Tracer un cercle

giudy

Bonjour ,

Je suis entrain d'écrire un programme qui trace un cercle (sans utiliser de fonctions trigonométriques ,  en  tracé continu et les points calculés doivent être contigüs) .

J'ai illustré mon algorithme avec l'exemple suivant : je veux tracer un cercle de centre (10,10) et de rayon R=5 . On part du pixel de coordonnées (15,10) (qui appartient forcément au cercle) . Je commence par tracé le quart du cercle nord-est , sachant que le prochain pixel sera forcément  soit celui qui se trouve immédiatement au nord (15,9) (ici d^2 qui est la distance au centre = 26) soit celui se trouvant à l'ouest (14,10)(pour celui là d^2=16) , soit celui au nord-ouest (14,9) ( pour celui ci d^2=17) .

Sachant que R^2=25 , on sélectionne le point dont la distance (au carré) au centre est la plus proche de 25 : j'ai pris le point de coordonnées (15,9). On répète cette opération jusqu'au point correspndant à pi/2 .

Je commence par écrire le programme C qui créé une fenêtre de 400*400 puis y trace un cercle de 100 pixels de rayon dont le centre se trouve aux coordonnées (200,200) :

#include <stdio.h>
#include <graphics.h>

int main ( ) {
 int i ; int R = 5
creer_fenetre (400 , 400 , "white" , "black")
for (i=100 ; i<=300 ; i++)
afficher_point (100 , i) ;

/* Là ou je bloque , c'est que je voudrais utiliser la distance euclidienne pour calculer à chaque fois la distance d (distance au centre) mais je ne vois pas l'algorithme que je peux écrire pour utiliser cette formule ? (si on prend par ex deux points P1(x1,y1) et P2(x2,y2) et que d(P1,P2) = sqrt { (x1-x2)^2 + (y1-y2)^2 } */ 

J'espère avoir été clair pour l'énoncé !

Merci de m'aider .

Giudy

lundi 6 octobre 2008 à 14:31:52 | Re : Tracer un cercle

genko

Bonjour Giudy,
Si je comprends bien, tu veux implémenter  /* (x1,y1) et P2(x2,y2) et que d(P1,P2) = sqrt { (x1-x2)^2 + (y1-y2)^2 } */.
Alors sers toi du fichier d'entête "math.h"  et utilise la fonction "pow" qui traite les puissances qu'elles soient entières ou réelles. Au fait  avec la fonction pow, si x et y sont deux réels, x^y = pow(x,y). Et comme sqrt(x) est encore x^(0.5)
Tu peux donc faire comme ceci:
# include<math>
d = pow(pow(x1 - x2,2)  + pow(y1 - y2,2), 0.5);

J'espère que cela t'aidera.

Merci.
Genko

jeudi 9 octobre 2008 à 20:17:04 | Re : Tracer un cercle

yann_lo_san

Salut, si ça peut t'aider,

_virtuel  =  la zone mémoire ou dessiner (surface DDraw par exemple)
cx = centre x horizontal
cy = centre y vertical
r = rayon
ECRAN_X = résolution horizontale

void circle(UCHAR* _virtuel, int cx, int cy, int r, unsigned char coul)
{
 int x, y;

 for(x=-r; x<r; x++)
 {
     y = (int)sqrt(r*r - x*x);
  _virtuel[(cy+y)*ECRAN_X+x+cx] = coul;
  _virtuel[(cy-y)*ECRAN_X+x+cx] = coul;
 }
}



Cette discussion est classée dans : écrire, centre, tracer, distance, cercle


Répondre à ce message

Sujets en rapport avec ce message

Prob avec Sleep [ par blinkseb ] Bonjour à tous,j'ai besoin de tracer un cercle (en réalité c'est une ellipse mais le prob reste le même !) en un certain temps.Je calcule dont le nomb resoudre des équation de cercle [ par inconnu2nulpar ] 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 le lieu d'un centre de gravité [ par annso777 ] <TD id=HB_Focus_Element vAlign=top width="100%" background="" CRichEditView [ par isir ] Dans une app SDI, j’ai une boite de dialogue qui possède un contrôle CrichEditView, je reçois des messages (des chaînes de caractères) et je les affi connecter a un serveur a distance (urgent!!!!!!) [ par elfiosi ] salut a tous, j'utilise la fonction mysql_real_connect sur visual C++ 6.0 pour acceder a une base de donnee a distance. Est ce que ca requiert une in Trouver le centre du cercle [ par stanlenoan ] Bonjour à tous,Je travaille sur un programme de traitement d'images venant d'une webcam, à partir de la bibliothèque openCV.Pour le moment je veux sui Constucteur avec objet en argument ?? [ par vincemail ] Bonjour, je suis débutant en C++ et donc voilà, je pense que le titre est assez explicite, j'aimerai faire une classe Cercle dont le constructeur pren Ecrire dans une fenetre extérieure [ par Cybernus ] Bonjour,Apres pas mal de recherche, je ne vois toujours pas comment on peut écrire dans une fenetre extérieure a un programme (et non pas une fenetre Comment écrire pour un fichier Map [ par Loukhass ] Bonjour, Je cherche a partager des variables entre plusieurs process. Ces variables sont de types différents allant de l'entier a la liste (ou le vec OpenGl distance de vue [ par fireuo ] Bonjour je vien de commencer l'openGL et que commence a importer des 'Mess' dans mes projets. J'ai aussi rencontré un problème que je ne suis pas capa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,733 sec (3)

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