1

bon, j'ai fait un peu de recherche et enfait, j'en ai deduis que le rotozoom était en fait une rotation dont on multipliais le produit par un facteur - d'où le zoom -

qqn aurait deja programmer ca ?

2

Je pense que si tu prends la matrice de rotation, que tu multiplies les valeurs pas ton facteur de zoom, ça devrait aller.
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

3

Ce n'est pas dur. Le rotozoom consiste à appliquer une similitude directe (de rapport r et d'angle q) au sprite. Donc à chaque point de la destination, tu appliques la transformation réciproque, qui lui aussi est une similitude directe (mais de rapport 1/r et d'angle -q). Donc:
1. Tu calcules z=e^(-iq)/r.
2. Pour chaque pixel M(x,y) de l'écran, tu calcules s=z(x+iy) et tu arrondis la partie réelle et la parte imaginaire aux entiers les plus proches pour obtenir l'affixe du pixel source S.
3. Si S est à l'intérieur du sprite, si S est allumé, tu allumes M, si S est éteint, tu éteins (x,y).

Un conseil: travaille en virgule fixe:
- calcule z d'abord en __complex__ float, puis 65536z en __complex__ unsigned long. C'est cette valeur que tu utiliseras dans tout le reste de la routine.
- calcule 65536s en __complex__ unsigned long long, puis ajoute 32768 si tu veux avoir un arrondi exact, puis calcule s en __complex__ unsigned long avec un >>16.
[edit]Edité par Kevin Kofler le 14-01-2002 à 16:57:40[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

eh bien... je regrette pas de pas avoir fait spé maths : j'aurai été encore plus largué qu'en tronc commun grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

En effet, les similitudes directes sont au programme de spécialité en Terminale.

Au fait, j'ai oublié de préciser qu'il fallait retirer les coordonnées du centre de rotation de celles de M et les rajouter à celles de S.

Donc l'algorithme corrigé est:
1. Tu calcules z=e^(-iq)/r.
2. Pour chaque pixel M(x,y) de l'écran, tu calcules (x',y')=(x-xo,y-yo) où o(xo,yo) est l'endroit où le centre de rotation sera affiché, tu calcules s'=z(x'+iy'), tu arrondis la partie réelle et la parte imaginaire aux entiers les plus proches pour obtenir s", puis tu rajoutes xO+iyO, où O(xO,yO) est le centre de rotation, pour obtenir l'affixe s=s"+(xO+iyO) du pixel source S.
3. Si S est à l'intérieur du sprite, si S est allumé, tu allumes M, si S est éteint, tu éteins (x,y).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Ah ouais. Bon alors moi c pas spé maths mais c pas grave, je squatte grin

Kevin m'a fait y'a pas longtemps une routine qui fait une rotation parfaite, magnifique, etc... Mais malheureusement ça met environ 30 secondes pr l'afficher...

Comment faut-il s'y prendre pour avoir une rotation rapide ? (je pense par exemple à MegaCar, ou des jeux du même genre)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

Y'a pas de rotations de sprites dans megacar, c'est 8 sprites qui représentent la bagnole à différents angles... Pour si peu le programmeur n'allait pas se faire chier avec une routine de rotation smile
[ Come take us out of here / take us anywhere... oh yeah ]

8

oué... c clair !
Et puis, 8 sprites en pré-calculé ça prend surement moins de memoire qu'une routine de rotations... et c^plus rapide
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

9

Bob64, je te l'ai transformée en virgule fixe et c'est assez rapide. Va voir ton topic de nouveau.
[edit]Edité par Kevin Kofler le 14-01-2002 à 19:49:44[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

Si vous faites comme ca, ca va etre lent !
Il faut Brehensamiser tout ca a en mourir !

11

euh c'est pas toi yhean qui avait fait un pti prog de rotation qui tournait bien?lovecoolroll
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

12

Si on utilise Bresenham, on perd en précision. Avec les complexes en virgule fixe, c'est probablement plus précis.
Et en virgule fixe, on est loin des 30 secondes que ma rotation en virgule flottante mettait. (C'est de l'ordre de grandeur d'une seconde, peut-être même moins.)
[edit]Edité par Kevin Kofler le 14-01-2002 à 20:29:02[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

comment on brehensamise tout ca en plein ?
Y a deux fesses qui sont sur la plage et l'une dit à l'autre :
"Qu'est ce qu'on fait maintenant ?"
Et l'autre lui répond :
"Ben PROUT !!!"

14

tien, rv en a fé un de rotozoom smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

15

atta kevin, ne t'enflamme pas .. je parle biensur d'algo sur ti ... donc la precision, tu t'en fou !
(le coup de la similitude .. smile)

ben personne n'en aurait programmer alors ?

(sinon, je v partir sur mes sin calculés puis modulés)

16

erf, je vien de te dire ke rv en a fait un...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

17

oué mais a mon age faut repeter ... tu verras ca plus tard

18

J'ai posté un algorithme de rotation par l'écriture complexe sur le forum, et malgré le fait que ça soit en C, la version en virgule fixe était assez rapide. Je pense donc que le rotozoom par l'écriture complexe doit aussi être passable (sauf qu'il faut utiliser des long longs plutôt que des longs à un moment, mais en assembleur optimisé, ça doit passer). Mais évidemment on n'a pas du 30 fps avec ça.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

mon rotozoom que j'ai pas encore optimisé du tout tourne à quelques FPS. pour une image de 64x64. Texturé comme on veut, ça ralentira pas.
Il n'y a plus de trous (ah, enfin smile) et j'ai même fais un modulo sur la texture. je devrais pouvoir vous le montrer bientôt.
Question précision, il a pas l'air d'être mal du tout, en utilisant que des words...
:D

20

J'arrive avec un peu de retard : Bon alors ct pas megacar, mais un autre jeu. Mais bon j'ai bien vu des rotations. Et puis par exemple il y a celui de RV qui marche très bien & vite (même si il ne fait que certaines tailles de sprites bien définies)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

21

La similitude directe peut se programmer en asm assez facilement, mais c'est tres lent.. (ca depend le referencielwink)

Enfin faut voir le tip de rotor zoom que tu veux faire..., on peut en effet limiter la casse si l'on impose des restrictions......
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

22

bob64 > grin
c t pas ce que je t'ai montré
si oui c'était de l'asm et ca marche que pour un sprite de 16*16 (mais on doit pouvoir l'améliorer smile
En préretraitre

23

>même si il ne fait que certaines tailles de sprites bien définies
qui t'a dit ça ? c pas vrai, sauf si tu considère que le multiple de 8 est défini ....

>gugusg
16x16, ça se change les doigts dans le nez smile

Je vais essayer de mettre mon rotozoom ce soir sur mon site, vous pourrez critiquer, comme ça grin
:D

24

bah 16*16 ou 1000*1000, c la meme chose, c juste les boucles qui seront plus longues, c pas plus dur à faire smile
[edit]Edité par gugusg le 15-01-2002 à 14:52:33[/edit]
En préretraitre

25

1000 c'est pas bien 1024 c mieux (2^10)
et ça changera même pas la taile des boules, ca je cherche un point sur une texture, car il faut pas partir de la texture pour rapporter sur l'écran, ça fait des trous...

arg, g pas eu le temps de poster ça, car g plein de boulot le soir (g t pas chez moi sad), donc je remets ça à après demain, car ce soir rebelotte sad
:D

26

RV > Oui pr moi des multiples de 8 c définit grin
la routine de Kevin pouvait faire nimportekoi * nimportekoi mais ct lent sad

Gugusg > Non ct pas ce que tu m'avais montré mais c'est du même genre

Comment on s'y prends alors pr redimentionner un sprite de 8*x de coté ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

27

je me suis trompé, c un sprite de 2^n de coté, car tout se joue au moment du décalage logique vers la droite (car c ce qu'il faut faire sans flottants, passer de grand à petit)
:D

28

Dans mon algorithme de rotation, rajouter le zoom ne changerait pas grand chose. Il faut juste prévoir des nombres de taille plus grande pour avoir la place pour un facteur >1. Sinon, le facteur de zoom s'intègre directement dans le facteur complexe pour la rotation. (Ça serait le facteur r, et la rotation le facteur e^(i theta).) Et le seul endroit où j'utilise des flottants, c'est le calcul du facteur complexe, qui ne fait pas partie de la boucle (mais est effectué avant). Le reste, c'est de la virgule fixe.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

À propos de Zoom, j'ai fini d'adapter ton algo, et maintenant ça marche sans problème, et c'est très simple à utiliser.
=> Merci wink
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

30

c souvent beaucoup plus facile que ce que l'on peut croire, le rotozoom, en fait, c le pur truc bidon
:D