champ de vecteurs
Le jeudi 3 juillet 2008 à 21:47 :: Flash-AS3 :: #42 :: rss :: 2534 lectures
you hou hou!
ça pour le coup c'est trop bien 
en fait c'est comme des particules mais qui bougent.... ah merde ça fait tout le temps ça les particules ?! :S
bon... ok
alors là trop bien.
y a une semaine je me dis comme ça (je me parle tout seul et je m'appelle nico):
- vas-y nico ça fait au moins depuis hyper longtemps que tu veux fairte un champ de vecteurs.
- ok nico. (oui je me réponds aussi dans ces cas là...)
et nous y voila.
donc c'est un système qui ne sert strictement à rien, sinon à faire bouger des particules de manière : "yeah!".
ça reprend en partie le truc d'avant (panpanpan!) sauf que pas du tout en fait, à part les particules-pixel.
un champ de vecteurs, en gros, c'est des forces qui influent sur des vecteurs.
j'avais vu une démo que je ne retrouve pas, il s'agissait de l'effet venturi en flash, ça sert à rien mais je l'ai déja dit je crois.
après je suis tombé sur ce truc : http://www.thecleverest.com/content/attractors.swf en cherchant désespérément des attracteurs étranges faits en flash. Bon, c'est vite fait mais c'est assez hypnotique quand même 
tout ça pour dire que j'ai fait une petite simulation dans laquelle on manipule des forces, des attracteurs, et des repousseurs.
Il y a une force de base qui envoie les particules dans une direction déterminée par son angle (bouger la poignée) à une force déterminée par sa taille pondérée par un facteur étalonné de 0 à 1 : le STIFFNESS, c'est une variable statique que j'ai mis pour chaque classe (qui affecte par conséquent toutes les instances d'une classe).
Je pense qu'il serait intelligent de la faire plus spécifique pour chaque instance mais je ne suis pas très intelligent. c'est valable pour le reste du code.
la force d'attraction-répulsion-influence dépend beaucoup du STIFFNESS de chaque classe étendant Force.
le truc (click-drag-run):
les sources:
- VectorField
- ForceField
- Force
- Vector
- un fla pour rigoler
bon l'appli marche pas top (les forces notamment, des fois elles font n'imp' ) mais ça montre le truc.
recommandations du chef :
testes avec 2 émetteurs, c'est suffisamment bordélique et ça donne de meilleurs résultats.
la première fonction d'initialisation parse une image ( 900 particules, beaucoup ), il y en a un e autre qui crée des points aléatoires.
par défaut ça fait un cercle avec la colorisation Zed-K(copyright
)
pour réinitialiser le bouzin il faut balancer un instance.dispose() avant de re-remplir le tableau de vecteurs ( VectorField.vectors ), donc c'est cool.
aprés la petite croix efface la force cliquée. la dernière force cliquée passe auddessus et faut se mettre sur rien pour en créer une nouvelle
Pour les forces, le plus important c'est d'overrider la méthode 'equation', on peut faire des trucs vrai de ouf mais là pareil c'est pour l'exemple, c'est une base.
le reste ben je te laisse regarder, c'est pas codé bien , mais je sais pas faire donc ... heu ... courage 
ah si ! un truc important la vitesse max est définie par Vector.MAX_SPEED, comme tout est à peu près décorellé, tu peux faire plein d'update() avant de rendre le truc, ça permet de faire un 'grapheur', de voir l'évolution d'un système à un temps T. et aussi customiser la fonction effect() ça peut envoyer du slippu.
y a une booléenne render plutôt qu'une méthode à part, question de perfs...
et puis sinon, ben je crois que les boutons ont des noms qui disent ce qu'ils font
nan vraiment celui là sert à rien mais j'espère que ça te plaît parce que moi vachement et sinon tu dégages de mon blog :D
note pour plus tard:faire des trucs utiles.
copains
Commentaires
1. Le vendredi 4 juillet 2008 à 14:30, par Zed-K
2. Le samedi 5 juillet 2008 à 10:48, par dgezeo
3. Le samedi 5 juillet 2008 à 12:40, par nicoptere
4. Le lundi 7 juillet 2008 à 12:15, par Zed-K
5. Le lundi 7 juillet 2008 à 22:01, par Wilfrid
6. Le mardi 15 juillet 2008 à 02:01, par tlecoz
7. Le mercredi 10 décembre 2008 à 09:04, par Joni
Ajouter un commentaire