déjà, fait ton truc en basic, et tu y arrivera mieux, ensuite utilise tout ce que tu sais en ce qui concerne la trigonométrie, et donc les notations polaires (pour les rotations)
pour le zoom, le ne connais pas de remede miracle, a part le fait de balayer une ligne de pixels source, et d'étirer ou non cette ligne en trainant sur certains pixels, ou en en sautant quelques uns
une matrice est une liste considérée avec deux dimensions, mais les données d'une matrice sont stockées bout a bout en mémoire, comme une liste, donc, tout ça pour dire qu'une liste c'est directement la mémoire, donc une matrice c'est un bloc mémoire continu.
si tu fais des manips avec des matrices, je te vois venir avec une matrice source, et une autre pour le résultat, or il faut directement afficher le resultat, sinon tu perdras du temps, et même pas mal, je pense !
Merci, mais pour étirer une ligne de 1 pix, je fais comment?
J'intercalle un aléatoirement un pixel?
Et pur la réduire, si j'en vire 1 au pif ca fait des trucs bizzares!
Ca serait cool de faire un tuto là dessus!
pr étirer/compresser une ligne-> tu prends:
la longueur de la ligne non étirée->li
la longueur de la ligne étirée->lf
tu fais li/lf->deltal
et puis:
en pseudo c:
fpos=0;
while(count=0;count<li;count+=deltal)
{
copypixel(int(count),fpos);
fpos++;
}
la fonction copypixel(x,y)
copie le pixel x de la ligne originale, et le place au pixel y de la ligne finale...
vala.
un système comme ça devrait marcher, une confirmation serait la bienvenue...
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
Evidement si tu t'arréte là dessus....
Il y a une méthode qui marche pour les 2 (rotations et zooms=homothéties) ou pour une combinaison des 2 (=rotozooms=similitudes directes): Soit T ta transformation. Soit T^-1 la transformation inverse. Il suffit alors de calculer T^-1(P) pour chaque pixel P de la destination, arrondir ses coordonnées aux entiers correspondants pour obtenir les coordonnées du pixel P0 correspondant (= "arrondir T^-1(P) au pixel P0 correspondant"), vérifier si P0 est à l'intérieur de la source et si c'est le cas, si P0 est allumé dans la source. Si les 2 sont le cas, on allume P, sinon on l'éteint. (Ou alors si P0 est en dehors de la source, on ne touche pas à P, sinon on l'allume si P0 est allumé et on l'éteint si P0 est éteint.) Comme ça, on est sûr de ne pas oublier des pixels de la destination, et de ne pas perdre du temps à allumer le même pixel plusieurs fois.
[edit]Edité par Kevin Kofler le 02-11-2001 à 23:30:47[/edit]
c ce que je me tue à dire à chaque topic sur ce sujet... au lieu de prendre un pixel du sprite et de chercher où il va être sur l'écran, on prend un pixel de l'écran et on regarde à quel pixel il correspond sur le sprite...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
TiMad Le 03/11/2001 à 18:28 bon en bref je vais expliquer un zoom 1/2 pour une image 4 gray c'est simple...
ca revient a passer de 4 pxl (un carre de 2) a un pixel...
apres pour savoir quel couleur choisir on fait des moyennes..
exemple:
Si on choisi un ordre de predominance : 0 >> 1 >> 2 >> 3
pallette de couleur: 0 1 2 3
|0 0|
|0 0| moyenne 0 donc c'est 0 ca donne evidenement 0
puis:
|11|
|22| moyenne 1 donc 1 (car 1 predomine sur 2)
de meme
|12|
|34| moyenne 2
|11|
|14| moyenne 1
Bon en bref c'est tout le tmps comme ca...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
TiMad Le 04/11/2001 à 14:15 HerveRV> un fast pxltst qui fait du 48000c/S je pense pas que cela ralentisse trop...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!
Pollux>Je doit étre idiot: On parcoure tout l'écran ou une zone pré-établie?
c pas du tout une question stupide !
oui, comment vous vous y prendriez ? vu que l'on ne peux pas savoir quelle taille l'image tournée aura à la fin !