Déformation d'image bitmap en as

Soyez le premier à donner votre avis sur cette source.

Vue 17 110 fois - Téléchargée 2 396 fois

Description

Le code est simple, mais demande pas mal de ressource (tout dépend de votre gourmandise en fait). Lorsqu'on déplace les coins de l'images, celle-ci est analysée (BitmapData.getPixel) et reproduite en déformant les pixels (le code refait chaque pixel un par un).

Le résultat est vraiment sympa. Dans cette exemple, 1 coin bouge aléatoirement, les 3 autres tournent sur eux mêmes. Au bout d'un tour, toutes les images calculées depuis le début sont affichées les unes à la suite des autres (histoire d'avoir une petite animation sympa). Par contre, en raison du cacheAsBitmap, il faudra attendre 1 tour complet (une fois les images calculées, donc 2 tours au total) pour avoir une animation fluide.

Il est possible de modifier certains paramètres, comme la précision. PrecX et PrecY sont les variables responsables de la précision.
PrecX représente "le nombre de pixel utilisé pour reproduire l'image, sur l'axe des X (horizontale)".
PrecY représente "le nombre de pixel utilisé pour reproduire l'image, sur l'axe des Y (verticale)".
Donc plus PrecX (respectivement PrecY) est proche de la largeur (de la hauteur) de l'image, plus le résultat sera fidèle à l'original, mais plus le temps de calculs sera long.

Dans l'exemple, j'ai mis une précision globale à 0.5 (ça veut dire qu'on calcul un pixel sur 2 seulement).

J'ai mis initié parce que c'est pas assez facile pour un débutant. Il faut quand même commencé à comprendre un code AS sans avoir à se servir de l'aide ;)

L'image est libre de droit :)

Conclusion :


Bon, il y a quelques problèmes, déjà pour le moment, les coins doivent rester dans leur position relative (je ne sais pas si je ferai une mise à jour ou non). C'est à dire que le coin en haut à gauche doit rester grosso modo en haut à gauche (sinon ça fait une boucle for infini ! Paf !). C'est pas trop difficile à changer, malheureusement je suis pressé et je ne peut pas le faire maintenant, je le ferais dès que j'aurai du temps libre je pense.

Je ne sais pas si je ferai la mise à jour sur ce site, donc si vous êtes intéressé, venez sur http://lfabreges.free.fr/slagt (choisissez HTML ou Flash pour le type d'affichage du site, puis cliquez sur "Deformation"). Par contre, étant donné que je n'ai pas beaucoup de temps, la source n'y sera pas avant quelques heures (voire jour, je ne sais pas), donc la mise à jour pas avant quelques jours je pense, s'il y en a une. Bon promis, si j'y pense, je ferai aussi la mise à jour ici ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

scara 51
Messages postés
94
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
18 septembre 2007
-
C pour ca que je dis de couper l'image en 2 images ! La découpe se fait au nv des diagonales.
Slagt
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011
-
En effet, ça à l'air fort pratique. Mais de la à le généraliser pour sortir l'image en fonction de la position des 4 coins, c'est tout de suite beaucoup plus dur non ?

A chercher...

Merci pour l'info, je n'ai pas l'habitude de me servir des matrices, et c'est vrai que leurs capacités d'action sont assez étendues.
scara 51
Messages postés
94
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
18 septembre 2007
-
Au chapitre martix de l'aide de flash, recherches les infos sur "Inclinaison ou cisaillement".
Slagt
Messages postés
232
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
29 mars 2011
-
une torsion ?
scara 51
Messages postés
94
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
18 septembre 2007
-
Bon une tite solution pour optimiser tt ça : diviser l'image en 2 triangles rectangles et appliquer à chaque une torsion. Tout ca bien sûr en bitmap. Ca permet de déformer l'image sans qu'il y ait parallélisme car on sépare en 2 l'image.

Et là la qualité comme la vitesse suivent.

Je ne sais pas si je suis clair. Sinon je peux réexpliquer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.