Alchemy - fractals viewer

4/5 (4 avis)

Vue 46 679 fois - Téléchargée 717 fois

Description

->Préambule :

Voici la première source sur Flashkod qui traite de la technologie Alchemy développée spécialement pour les applications Flash. Alchemy est en faite une technologie qui permet d'utiliser la puissance du C ou C++ afin d'accélérer les traitements lourds de vos animations tel que l'encodage PNG, ou le cryptage de données.

Adobe, en lançant cette technologie, à fournit une API de developpement en C à utiliser pour créer des fonctions utilisables par la suite dans le code Action Script dans son SDK. Il est regrettable de voir que presque personne ne s'intéresse à cette technologie bien qu'elle ait été publiée il y a plus d'un ans de cela...

En gros, Alchemy permet de réutiliser des fonctions C ou C++ directement dans votre code Action Script. Le code C++ ou C doit être préalablement compilé grâce au compilateur du SDK et il donnera un fichier SWC, c'est à dire du byte code, comme lorsque vous compilez vos anims en SWF. Mais le compilateur utilisé est bien plus puissant que celui de Flash ou Flex et le byte code est donc très optimisé réduisant juscqu'à 10x les temps de calculs !

->La source :

Ici pour tester cette technologie, j'ai developpé une petite application pour admirer des fractales à l'ecran. Le calcul de la couleur de tous les pixels est effectué dans une fonction C++ qui à été compilée par le compilateur fournit avec le SDK. J'ai pris les fractales car ce sont des objets Mathématiques très lourdes à calculer.

Plusieurs fractales dispo : Mandelbrot ou Julia. Pour cette dernière les parametres de son equation C et D sont ajustable. Reglage de la couleur, nombre d'itération par pixel (plus il y en a, plus c'est proche de la réalité), déplacement à la souris, zoom avec molette souris...

Source / Exemple :


Contenu des fichiers :
Main.cpp : fonctions C++ permettant de calculer la couleurs des pixel des fractales.
main_empty.fla : Rien, paramétré pour compiler le fichier Fractal.as
Fractal.as : Code Action Script AS3 qui utilise les fonctions C++ et gère l'application.
fractals.swc : Code C++ compilé en bytecode, résultant du fichier Main.cpp.
main_empty.swf : Application finale!

Conclusion :


Pour la fractale de julia, voici quelques paramètres qui rendent bien :
c:0.2, d:0.63, 100 itérations
c:0.08, d:0.63, 300 itérations
c:0.04, d:0.63, 300 itérations
c:0.05, d:0.63, 300 itérations

---------------

Le but de la source est bien sur avant tout de fournir un exemple d'utilisation d'Alchemy et non pas de présenter un explorateur de fractales, en effet cette application est un exemple d'utilisation d'Alchemy uniquement, le fait de pouvoir explorer les fractales avec pas mal d'option est une sorte de... bonus :D
Les fractales sont des objets mathématiques resultant d'équations imaginaires. Plus d'infos ici : http://fr.wikipedia.org/wiki/Fractale

Pour en savoir plus sur Alchemy :
http://labs.adobe.com/technologies/alchemy/

Pour savoir comment installer le SDK pour utiliser Alchemy :
http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started

Pour voir la documentation de l'API C/C++ de Flash pour Alchemy :
http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Developing_with_Alchemy:C_API

Codes Sources

A voir également

Ajouter un commentaire Commentaires
blackwizzard
Messages postés
1258
Date d'inscription
mercredi 21 mars 2001
Statut
Membre
Dernière intervention
21 juin 2009
2
3 août 2009 à 00:01
Super source!
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

15 juil. 2009 à 10:17
Re, oui j'ai galéré sévère pour l'installer, en plus cygwin c'est ultra chiant, mais bon. Je crois que je vais installer une version quelconque de linux (helas, j'ai pas de mac). En tout cas ça répond exactement à mon besoin, c'est à dire le calcul pur et dur (sans manipulation d'objet).
Je vais me faire un peu la main dessus en évaluant les temps d'exécution avec des simple boucles for, je ferai un retour pour ceux que ça intéresse.
A+
stefbuet
Messages postés
576
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2009

14 juil. 2009 à 22:33
Salut,

Tout d'abord je te souhaite bon courage pour installer le SDK, comme tu va le constater, c'est un peu galère, au niveau de la partie qui utilise Cygwin. Mais une fois installé, la possibilité de compiler le code C ou C++ via les compilateurs gcc ou g++ en 3 lignes est appréciable :)

Ensuite, il faut savoir que Alchemy ne donne pas un rendement x10 dans tous les cas, et une mauvaise utilisation de celui-ci peut rendre l'application très très lente, bien plus qu'en AS3 pur. Par exemple si tu veux remplir tous les pixels d'un BitmapData, bien que tu le puisses, il ne faut pas utiliser la fonction setPixel directement depuis ton code C++, oh non! La meilleur façon de récupérer des données calculées via Alchemy est de les récupérer directement depuis l'adresse mémoire utilisée par Alchemy dans la RAM, et tu y accède via un ByteArray (cf. source).

Alchemy est donc bon pour le calcul pur et dur. Donc pour tout ce qui est encryption, encodage, calculs arigthmetiques, c'est une vrai bête. Par contre à ne surtout pas utiliser pour refaire une animation Flash en entier, bien que l'API du SDK en C permette de créer tous les objets que l'on veux, et appeler toutes les fonctions de ces objets, cela reste extremement plus lent qu'avec de l'AS3.

A guise d'exemple, pour remplir une petite zone de 100x100 pixels via des appels redondants de la méthode setPixel dans un Bitmapdata, on arrive avec l'AS3 à un résultat instantané, tandis qu'Alchemy dépasse les 15s limite de calcul du Flash Player par default :D.

->Donc Alchemy vous aidera pour des -calculs- et non pas des manipulations d'objets.

Stef.
gremlins7
Messages postés
380
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
28 décembre 2009

14 juil. 2009 à 20:35
Salut,
Merci pour ce code, je savais pas que l'on pouvait integrer du C++. Je commence à peine à regarder ton code, je n'ai donc aucun commentaires à faire, mais nous donner cette info justifie la note. J'éspère que, comme tu dis, ça fait gagner du temps de calcul, je vais de ce pas evaluer ce gain de temps.
Encore merci
Grems

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.