begin process at 2010 02 10 12:36:05
  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 le lieu d'un centre de gravité [ par annso777 ] <TD id=HB_Focus_Element vAlign=top width="100%" background="" 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 ecriture d'un caractère au format exposant [ par toxjamescook ] Bonjour,j'utilise borland c++ builder et j'aimerais pouvoir écrire un label du genre m3/h avec le trois sous format exposant.j'aimerais savoir quel es tracer une courbe à partir d'un txt [ par daminou973 ] Bonjour à tous! Je réalise actuellement un projet de deuxiéme année de bts iris. Mon projet consiste à définir les profils de consommation d'une centr Choix d'une API [ par loic72 ] Bonjour,je dois choisir une API pour pouvoir réaliser des graphes relativement complexes, avec des noeuds et arcs qui seront des objets spécifiques do arc de cercle [ par thorodin ] quelqu un aurait il un code (en C) pour tracer un arc de cercle sans utiliser la fonction Drawarc de l api windows.j ai comme parametre le cercle du c acces fichier à distance [ par ezekiel_ezekiel ] salut à tous,voila mon problème: je voudrais transferer uniquement le contenu d'un fichier que j'ai en local dans un fichier sur un serveur sans faire programme en c [ par mapinfo ] Bonsoir,Je débute en programmation en C, je devrais écrire un programme en C sur U.M.T.S. Voilà l'énnocé.Une image de satellite est une carte des alti écrire quelque chose dans un fichier [ par rafmos ] Je suis en train de développer un programme pour une bibliothèque en ligne qui permet d'écrire dans un fichier la longueur, la largeur, l'épaisseur, l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

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

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