blinkseb
Messages postés57Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention18 avril 2005
-
9 oct. 2004 à 21:51
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 2009
-
10 oct. 2004 à 18:01
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 nombre de point nécessaire au tracer du cercle, puis le temps a mettre pour tracer chaque point.
Donc, dès que je place un point avec SetPixel, je fais après un Sleep() avec comme argument le temps à attendre avant de devoir tracer l'autre point.
Ca marche très bien sur mon ordi ! Mais pas sur mon autre. Le tracer ne se termine pas. En faite, je boucle jusqu'a ce que kle temps soit écoulé, et a ce moment là, le tracer doit être fini, mais ce n'est pas le cas sur l'autre ordi.
Il semblerai que Sleep() attende une voire deux millisecondes de trop ce qui fait perdre facilement 1 à 2 secondes à la fin du tracer, ce qui expliquerait pourquoi le tracer n'est pas fini.
Avez vous des idées pour que je puisse attendre exactement le bon nombre de millisecondes ?
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 9 oct. 2004 à 22:02
moi aussi j'ai eu des problemes avec les sleeps, en fait sleep n'est pas portable, il depend de la rapidite de ton systeme, utilise GetTickCount qui lui est sur de marcher INDEPENDEMMENT de la machine.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 oct. 2004 à 23:09
Cette (mauvaise) solution va utiliser ton UC a 100%, normalement Sleep doit bien marcher. J'ai déj entendu parler de fonctions de l'API Win32, mais j'arrive pas a les retrouver
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 10 oct. 2004 à 02:20
essaye de faire le traitement dans l'autre sens : tracer un certain nombre de points en un temps donné, 20 ms par exemple et le tracé devrait être fluide. pour éviter des arrondis des divisions, il faudrait voir en fonction du temps actuel le nombre de points sensé avoir été tracé et les afficher.
GetTickCount() donne le temps en ms
QueryPerformanceCounter et QueryPerformanceFrequency donnent des temps + précis.
Vous n’avez pas trouvé la réponse que vous recherchez ?
blinkseb
Messages postés57Date d'inscriptionmercredi 25 août 2004StatutMembreDernière intervention18 avril 2005 10 oct. 2004 à 10:02
Utiliser l'UC à 100% ne me gène pas particulièrement, ce programme doit n'être utilisé qu'une seule fois pour les TPE, alors si ça mache comme ça.
Pour ymca2003, je ne vois pas comment faire autrement que comme je fais, étant donné que je possède l'équation polaire et que j'augmente l'angle de 0.01 rad à chaque tour.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 10 oct. 2004 à 12:11
ce que je voulais dire c'était de ne pas tracer un point puis d'attendre qqs ms car tu risque de dépasser le temps de 1 à 2 ms à chaque point, mais de faire une boucle dans laquelle tu as une petite pause (Sleep(10) par ex), de récupérer le temps courant, de la comparer avec le temps de début et de calculer le nombre total de points (ou l'angle total) qu'il faudrat avoir tracer à ce moment là et de les tracer d'un coup.