1

Bonjour, j'aurais besoin d'aide pour accélérer un peu ma fonction, qui consiste à dessiner une cible de darts... elle marche tès bien, elle est juste trop lente... la voici:

void DrawTarget(short x1,short y1,short radius)
{
SCR_RECT rect;
rect.xy.x0 = 0;
rect.xy.y0 = 0;
rect.xy.x1 = 159;
rect.xy.y1 = 99;

//Concentric circles:
DrawClipEllipse(x1,y1,(radius/20),(radius/20),&rect,A_NORMAL);
DrawClipEllipse(x1,y1,(radius/8),(radius/8),&rect,A_NORMAL);
DrawClipEllipse(x1,y1,(radius/2),(radius/2),&rect,A_NORMAL);
DrawClipEllipse(x1,y1,((radius/2)+(radius/8)),((radius/2)+(radius/8)),&rect,A_NORMAL);
DrawClipEllipse(x1,y1,(radius-(radius/8)),(radius-(radius/8)),&rect,A_NORMAL);
DrawClipEllipse(x1,y1,radius,radius,&rect,A_NORMAL);

//Lines:

float angle;
for(angle=PI/20;angle<2*PI;angle=angle + PI/10)
{
DrawLine(((radius/8)*sin(angle)+x1),((radius/8)*cos(angle)+y1),((radius)*sin(angle)+x1),((radius)*cos(angle)+y1),A_NORMAL);
}
}


et avec 50,50,45 comme arguments, ça donne ceci:
[URL=http://imageshack.us][IMG]http://img205.imageshack.us/img205/8021/screen5mq.png[/IMG][/URL]

quelqu'un pourrait m'aider?
Je me souviens
Ad mari usque ad mare

GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.

2

Tu as beaucoup de possibilités différentes ?
Je veux dire que si tu as une liste finie de valeur pour "radius", tu peux créer simplement des images correspondant à chaque "radius" possible et d'ouvrir la bonne en fonction du "radius".

Enfin si tu as beaucoup d'images, ce n'est pas forcement une bonne idée^^

Question de curiosité, c'est pour faire quoi ? smile
Visitez mon site : http://www.bobti89.fr.st
Testez mon forum ici

3

un jeu de darts tout simplement...
en fait je n'ai pas beaucoup d'images, c'est juste que je ne suis pas sûr de la taille pour l'instant et je n'ai pas envie de tout recalculer chaque fois que je change...
Je me souviens
Ad mari usque ad mare

GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.

4

tu peux la dessiner une fois, puis sauver la partie de l'écran ou tu l'as affichée pour la redessiner en un seul coup les fois suivantes (ça sera plus simple que de refaire une fonction de tracé de cercle, et de toutes façons les performances seront meilleures en vitesse)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Edited_3632

6

Lesquels ?
Enfin je pense que quand tu appelles DrawClipEllipse t'es plus à un ou deux floats près hehe
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

7

ya-t-il un moyen d'enregistrer une image dans le porgramme sans utiliser de bitmap(sprites)?
du genre exécuter le prog pour afficher l'image et ensuite en exécuter un autre qui convertit tout ça en qqch que je vais pouvoir utiliser pour dessiner ladite image...
Je me souviens
Ad mari usque ad mare

GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.

8

qu'est-ce qui te gêne ? la place que ça prend si tu le stockes en bitmap pur ?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

Ximoon :
Lesquels ?
Enfin je pense que quand tu appelles DrawClipEllipse t'es plus à un ou deux floats près hehe

C'est pas DrawClipEllipse qui prend du temps, c'est ses 4*20 calculs de cos/sin.

Solution=> mettre dans une table les cos/sin précalculés.

Si tu veux pas utiliser de table, tu peux quand même diviser par 4 le nombre de cos/sin en dessinant des diamètres au lieu de rayons puis d'effacer l'intérieur.

Tu peux aussi exploiter le fait que cos(a) = cos(-a)...

10

Solution=> mettre dans une table les cos/sin précalculés.


ouais je pense que c'est ça que je vais faire... merci Jyaif!

EDIT: c'est ce que j'ai fait et c'est beaucoup plus rapide maintenant. Merci beaucoup!
Je me souviens
Ad mari usque ad mare

GENERATION 23: The first time you see this, copy it into your sig on any forum and add 1 to the generation. Social experiment.