Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Betas et WIPs » Truc où ça tourne (81 réponse(s))
./REPRISE DU POST PRECEDENT (post n°19)   Marquer comme non lu.
Jfg Ecrit le: Mardi 17 janvier 2006 à 12:59 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Je ne sais pas comment on écrit de l' algo en utilisant les pointeurs; je vais utiliser la syntax du C (que tu devrais apprendre)


j'utilise des tables de cos et de sin multipliées par 512


fonction rotatePoint(*x,*y,*angle) {
 x2=*x
 y2=*y
 *x=(x2*cos[angle] - y2*sin[angle])/512
 *y=(y2*cos[angle] +x2*sin[angle])/512
}


fonction rotateSprite(*spriteSrc, *spriteDest, angle) {
 
 Pour xDest de 0 à 16
  Pour yDest de 0 à 16
   xSrc = xDest
   ySrc = yDest
   rotatePoint(&xSrc,&ySrc,angle)
   if getPixel(xSrc,ySrc,spriteSrc)
   setPixel(xDest,yDest,spriteDest)
}
Kill Mario
    
./Post n°20   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 13:14 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


ok. Je connais la syntaxe du C tant qu'il n'y a pas trop d'* qui se suivent (genre ***fonction). Donc là ça va, je vais voir si je peux te faire un truc plus rapide. :)
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°21   Marquer comme non lu.
LionelA Ecrit le: Mardi 17 janvier 2006 à 13:15 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


tu peux pas utiliser les fonctions de rotations de sprite de Extgraph ?
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°22   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 13:20 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


Au passage, pourquoi tu sors ta fonction de rotation de la boucle? tu l'utilises ailleurs ou pas? sinon, je ne pense pas que ce soit utile.

et sinon, tu peux me filer tes tables que je teste stp? :)
-Edité le Mardi 17 janvier 2006 à 14:00 par Martial Demolins-
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°23   Marquer comme non lu.
Jfg Ecrit le: Mardi 17 janvier 2006 à 14:09 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


La fonction est static inliné, donc ca ne change pas grand chose je crois.
J'utilise cette fonction parceque le code est plus clair.

LionelA> a moins que j'ai raté un épisode, je ne croient pas qu'on puisse rotater suivant n'importe quel angle avec EG.
-Edité le Mardi 17 janvier 2006 à 14:11 par jfg-
Kill Mario
    
./Post n°24   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 17 janvier 2006 à 14:12 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Jfg :
La fonction est tatic inliné, donc ca ne change pas grand chose je crois.

Euh si. Tu prends l'adresse de tes variables, donc hop, obligé de les stocker en mémoire et pas dans un registre, au revoir vitesse!
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°25   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 14:12 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


bon, j'ai presque fini de coder, j'aimerais bien tes tables (pas envie de me les taper ^^)

edit-> au fait, tu précalcules toutes les positions c'est bien ça? donc tu calcules les 512 positions? et tu écris ton sprite rotaté dans un buffer toujours vide ou pas?
parceque sinon:
-on peut effacer le buffer de destination avant de calculer la rotation
-c'est pas la peine de calculer la rotation d'un pixel éteint
=> on gagne bcp de temps!
-Edité le Mardi 17 janvier 2006 à 14:15 par Martial Demolins-
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°26   Marquer comme non lu.
Jfg Ecrit le: Mardi 17 janvier 2006 à 14:20 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  



Kevin Kofler> Je me disais que la perte de vitesse étaient négligeable devant 4 multiplications.

Martial>
Je suis à l'école donc j'ai pas le code. Un de ses quatre je ferais un truc en php qui permet d'en générer.
Il y a 128 angles, pas 512.
Oui je part d'un buffer vide.
"c'est pas la peine de calculer la rotation d'un pixel éteint" >> avec le principe ou l'on part de la destination pour trouver la source, on ne peux pas savoir à l'avance si le pixel est éteint ou allumé, donc on ne peut pas savoir si il faut calculer la rotation ou pas.



-Edité le Mardi 17 janvier 2006 à 14:26 par jfg-
Kill Mario
    
./Post n°27   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 14:50 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

En fait, cette solution est extrêmement lente :( Tu dois projeter chaque pixel de la destination sur la source.
Tu peux faire bien plus rapide autrement... Si j'ai le temps je t'expliquerai comment.
    
./Post n°28   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 15:00 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


je sais, c'est pas sa solution que j'ai codé. ceci dit, je marche par pixel, mais il n'existe pas plus rapide par le calcul matriciel?

Jfg-> je pars de la source, ça gagne des masses en temps.
ok pour les angles, je me suis mal exprimé, je parlais des valeurs de la table (-512<x<512 ou -128<x<128).
-Edité le Mardi 17 janvier 2006 à 15:01 par Martial Demolins-
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°29   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 16:06 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Ah, tu fais comment ?
    
./Post n°30   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 16:15 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


comment je fais quoi? tout l'algo? déjà je vais partir de la destination en fait (mais ça change 3 fois rien au code). Sinon il est pas encore testé, il y a sûrement des fautes d'algo, je vais pas balancer le code #trop_honte# :D
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°31   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 16:37 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Bon au fait, voilà mon idée, elle permet d'obtenir les coordonnées source de chaque pixel en deux additions seulement (donc ça devrait être relativement rapide à la volée).
Lorsque vous parcourez les pixels du sprite rotaté de gauche à droite, ça revient au même que si vous parcouriez les pixels du sprite source selon un axe incliné (dont l'inclinaison dépend de l'angle de la rotation).
L'idée consiste alors à se déplacer dans la source le long de ce vecteur, et de lire la valeur de chaque pixel le plus proche de l'axe pour le reporter sur la destination.
Le plus pénible reste à trouver le début et la fin du vecteur (mais ça, ça peut être précalculé une fois pour toute au lancement du jeu sans rien consommer).
Je vous fait un schéma :)

Hop le voilà : http://sasume.free.fr/bordel/schema.png
Bon, je ne sais pas si ça éclaircit beaucoup l'explication, mais en gros, dans la source, on suit l'axe et on recopie les pixels rencontrés, sur la destination.
-Edité le Mardi 17 janvier 2006 à 16:50 par Sasume-
    
./Post n°32   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 16:42 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


euh... je veux bien pour le schéma :D
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°33   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 16:51 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Voilà :)
    
./Post n°34   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 17:03 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Un lien intéressant sur le sujet : http://www.guru-meditation.net/main.php3?root=487
    
./Post n°35   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 17:06 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


pas vu encore le lien, mais à mon avis il faut réimplémenter l'algo de tracer de droite pour suivre ton vecteur, non?
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°36   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 17:18 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Celui-là est bien aussi : http://www.alrj.org/docs/2D/rotozoom/rotozoom.html
    
./Post n°37   Marquer comme non lu.
Sasume Ecrit le: Mardi 17 janvier 2006 à 17:21 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Oui, tout à fait. Sinon, tu utilises des nb à virgule fixe (bcp plus simple, et pas moins bien niveau qualité).
-Edité le Mardi 17 janvier 2006 à 17:21 par Sasume-
    
./Post n°38   Marquer comme non lu.
Folco Ecrit le: Mardi 17 janvier 2006 à 17:42 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


intéressant en effet... ceci dit, je ne suis pas sûr que mon algo soit moins rapide...
d'une manière comme d'une autre, je vais parcourir tous les pixels, mais linéairement, sans me faire ch**r à passer par un algo de droite. Ca doit être dû au fait que mon algo est très spécifique (sprite 16*16 uniquement).
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
  :: Index » Forum Ti68K » Betas et WIPs » Truc où ça tourne (81 réponse(s))
Pages : 2/5     « 1 [2] 3 4 5 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 43.52ms avec 18 requetes