Accueil > Forum > > > > Tracer un cercle
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
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|