TUTO TILE 7 : PASSAGE À L'ISOMÉTRIQUE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 3 mai 2007 à 14:52
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 - 4 mai 2007 à 16:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42557-tuto-tile-7-passage-a-l-isometrique

ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
4 mai 2007 à 16:14
a ok je comprend mieu ^^.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 mai 2007 à 16:12
décalage des bits.

coté maths, ca multiplie (shift a gauche) ou divise (shift a droite) par deux...

00001000 <<
donne
00010000

etc.

si tu fais des opéations de multiplication(ou division) par des multiples de deux, dans des langages qui permettent les shifts, tu y gagne en perfs.
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
4 mai 2007 à 16:06
C'est quoi un shift en asm ?
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
4 mai 2007 à 12:21
ah d'accord, pas de shift en VB :(
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
3 mai 2007 à 21:20
Si si moi aussi j'ai lu que les multiplications sont plus rapides que les division en vb.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mai 2007 à 20:33
pas de shift en VB (dommage)

mais j'ai cru lire dans un bench que les multiplications etaient plus rapides que les divisions

peut etre n'est plus d'actualité, remarques...
cs_loloof64 Messages postés 342 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 6 novembre 2012
3 mai 2007 à 17:46
Je t'en conjure, ne tiens pas compte de mon formalisme informatique; je l'ai seulement fait parce que mes pensées n'étaient pas claires :

Renfield >> variable:2 >> cause >> {language = assembly, lsl or lsr} ?


(Le code variable/2 est préférable, est-ce à cause du fait qu'en assembleur on fait notamment appel à lsl.[taille], ou lsr.[taille] ?)
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
3 mai 2007 à 16:05
erf 450 ds l'exemple du zip ^^ (((800\32) * ( 600\32))=450 avec des divisions \ et pas /)
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
3 mai 2007 à 16:03
bah etant donnée que le /1.5 est appelé plus de 450 fois je pense que ca peut servir. ^^

Jamais vu cet editeur :s
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mai 2007 à 15:58
bien joué, le With et les modifs, c'est ok....

le /1.5 en *0.666666666666667
pas indispensable (non critique) car pas dans la boucle de traitement.
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
3 mai 2007 à 15:56
ton screen me rappelle l'editeur final yuri pour alerte rouge 2 sa ressemble exactement a ca le sol :p sinon la methode est interessante ^^
ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
3 mai 2007 à 15:33
J'ai mis le code à jour suivant tes conseils et même un peu plus, j'avou avoir honte de moi n'ayant pas vu ces erreurs...

Pour le GDI je ne connaissais pas du tout cette fonction ^^ .
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 mai 2007 à 14:52
Pour GDI, tu as aussi PlgBlt :
http://msdn2.microsoft.com/en-us/library/ms532296.aspx
permet de copier un rectangle source vers un parallélogramme cible

pour questions de perf (peu important ici, mais conseils bons a prendre) :

/ 2
à remplacer par * 0.5

utilises des variables (ou des constantes) pour ne pas recalculer
Cos(AngleRad) et Sin(AngleRad)

de même, tu peux stocker dans une variable
(y * Sin(AngleRad)) et (y * Cos(AngleRad)) pour ne pas les recalculer a chaque iteration de la boucle en x


voilà ^^

++ l'ami
Rejoignez-nous