| Popen est le nom d'une instruction de la libairie standard d'entrées
sorties du langage C. Il permet de lancer un programme à partir
d'un autre programme -process open- comme si il s'agissait d'un fichier.
Dans la version actuelle c'est en fait l'instruction Spawn (engendrer)
qui est utilisée. L'exécutable popen.exe sert donc d'interface
tremplin vers les autres projets de la collection.
L'ensemble de la collection est autonome dans
son arborescence, il est possible de l'exécuter directement sur
le CD ou de l'installer sur une machine en copiant le repertoire popen,
ce qui permet de faire des sauvegardes depuis certains programmes. Le tout
pèsera environ 4 Mo sur votre système.
Les programmes ont été developpés sous dos mais recompilés à l'aide de mingw32 et utilisent la librairie pour jeux vidéos Allegro: le résultat doit normalement tourner sur tout système windows récent (win98/NT/2000...) mais n'a été testé que sur windows98 deuxième édition. En cas de problème ou pour exécuter directement les programmes sans passer par popen, copier le fichier all3940.dll vers c:\windows\system Si popen refuse obstinément de démarrer
il s'agit probablement de l'absence des drivers directX appropriés
ou d'une incompatibilité matérielle avec la librairie allegro.
Assurez vous d'avoir une version récente de directX pour votre matériel
vidéo. Si ça ne marche toujours pas, il ne vous reste plus
qu'à maudire l'informatique jusqu'à la septième génération.
|
| Airship est un projet d'environnement expérimental pouvant simuler
et illustrer des modèles dynamiques simplifiés dans le cadre
de matrices tridimensionnelles à valeurs entières.
Airship comporte trois moteurs: Un moteur de rendu optimisé pour la projection de matrices de voxels en "flat shading". Ce moteur est immersif, c'est à dire qu'il autorise des points de vues depuis l'intérieur même des matrices. Il gère également la récursivité qui découle de la présence de sous matrices à l'intérieur d'une matrice.Dans la version actuelle cet espace ne comporte que des scènes statiques et quelques possibilité d'animation simple de type écoulement de "sable". Pilotage à la souris: Bouton de gauche: translation
Lacher les boutons avec un le mouvement souris
pour un effet de pilotage inertiel.
Pavé numérique:
Flèches de direction:
Pavé au dessus:
Inser: Créer des cubes sur le diamètre
du vaisseau avec la dernière couleur active
Clavier principal: Touches alpha (AZERTY...XCVBN) Chaque touche correspond à une couleur,
les premières sont dans l'ordre:
+Shift: ajouter des cubes de cette couleur
+Touches [0..9] [F5..F8]
touche exposant 2 (sous echap):
F1: créer un plan avec la couleur active
F12: afficher les coordonées
TAB: enregistrer une saisie d'écran Echap: quitter |
| Arbo8 est une étude préliminaire à CA2 de
la percolation d'un pointeur programme sur une matrice de déplacements.
Déplacer (ou pas) la souris
Echap: quitter |
| Simulation d'écoulement sur les canaux rouge/vert/bleu/noir.
Techniquement il s'agit d'un automate cellulaire à "conservation
d'état", les cellules bougent mais n'apparaissent ou ne disparaissent
pas. La matrice sous la fenêtre de l'automate représente la
totalité de la table logique définissant la dynamique.
Notice incluse |
| !Echap ne permet pas de sortir
de CA2!
!Il faut faire click droit et sélectionner QUIT! Prototype de microlangage CA2 est un environnement minimal de programmation interprétée constitué de matrices 2D contenant indifféremment du code ou des données. Le noyau du langage est un ensemble restreint de symboles terminaux correspondant aux opérations atomiques locales sur les cellules de ces matrices: un byte-code. Les séquences d'une fonction s'écrivent et se déploient en 2D, chaque cellule comportant un code et une orientation. La topologie permet d'implémenter des boucles itératives imbriquées, des piles d'appels (récursivité), des applications multithread pour des algorithmes simples. La robustesse du système le rend compatible avec de la programmation aléatoire (algorithmes génétiques). Trois programmes CA2 sont inclus dans le package: - Ecriture automatique aléatoire de programme et exécution simultanée. - Un programme autorépliquant non deteministe, clonage exponentiel du support/exécution. - Déploiement simultané d'arbres binaires sur une matrice, multi piles. La programmation manuelle s'avère très laborieuse. Le
faible nombre d'instructions necessite de nombreuses manipulations atomiques.
A l'évidence le code est trop compact et un jeu d'instructions paramétré
plus volumineux sur 16 ou 32 bits s'impose.
La notice complète de programmation de CA2 dépasse le cadre de cette distribution. Pour charger un des programmes inclus:
Espace: Pour lancer l'exécution
Echap: Pour pauser l'exécution [F1..F4]: mode d'exécution
Click gauche:
Click droit:
Pavé numérique:
|
| Jeux de dames cruelles. L'heuristique est un pur min/max de profondeur
5 demi-coups, l'algorithme d'évaluation est simpliste: un pion=1,
une case plus loin=0.05, une dame=5.
Programmé en 2 jours ce joueur de dames "force brute" me bat facilement sans remords alors même que j'en connais les rouages. Doté d'une tactique irréprochable mais souffrant d'une totale absence de stratégie un bon joueur doit pouvoir en venir à bout sans problèmes. Il est tellement bête qu'il ne sait même pas quand la partie est terminée. Bug: la dame se permet de revenir en arrière sur les prises multiples. Attendre son tour, cliquer sur le pion à déplacer pour le sélectionner puis cliquer sur la case de destination. Si ça ne marche pas c'est que le mouvement proposé n'est pas valide. Recliquer sur un pion sélectionner pour le déselectionner et en sélectionner un autre. Bref, tout ça est "intuitif". Pas de retour en arrière (no take back)
|
| Algorithme de déploiement topologique centrifuge, genre
art-déco.
Espace: animation automatique on/off NumPad:
control+2/4/6/8 suivi de shift+2/4/6/8:
divers numpad, click/bouger souris (essayer) TAB: saisie écran |
| Les systèmes itérés de fonctions sont un
classique de l'informatique graphique. On passe les coordonnées
d'un point par une des transformations du système (choisie au hasard)
puis on recommence. Pour le plan une transformation c'est par exemple une
translation, une rotation et un changement d'échelle. La figure
obtenue est fractale par construction: similaire à elle même
pour chaque ransformation. C'est le principe de la compression fractale
de la vidéo ou du son.
Les trois cadres du programme représentent trois transformations du cadre de l'écran. Si les transformations sont contractantes (les cadres d'arrivé sont plus petits que celui de départ) un théorème stipule que dans la succession aléatoire des transformations le point finit par parcourir la totalité de l'attracteur. Le cadre sélectionné est en rouge Clique gauche: sélectionner le cadre suivant Bouger la souris: bouger le cadre
Entrée: 1000000 itérations
au lieu de 100000
Echap: quitter |
Iterated Functions System is a classic of graphic computing. One point's
coordinates are applied through one randomly chosen transformation of the
system then again and again. For the plane a transformation can be a combination
of a translation, a rotation and a scaling factor. The final figure is
fractal by construction: similar to itself through each transformation. Its the basis for fractal video or audio compression. The three frames of the program show three transformations upon screen's frame. If transformation are contracting (?) -frames are smaller than screen- a theorem predicts the random sequence of transformations gets the point to fill up the whole attractor. The selected frame is red Left click: select next frame Move mouse: translate frame
Enter: 1000000 iterations rather than 100000
Escape: leave |
| Une trajectoire aléatoire en arcs de cercles dessine un
cheveux à l'écran. Ce cheveux vibre. Un remplissage (fill)
automatique est ajouté.
Espace: lisser le cheveux
|
| Dérivé de KRINKEUR. Représente des petits serpents
de pixels tropicaux sur le modèle de la trajectoire d'électrons
dans un champ magnétique perpendiculaire irrégulier.
Attendre: une nouvelle génération
apparaît
|
| Outil de visualisation de fonctions de transferts neuronales
à entrées dans le plan. Les réseaux de neurones artificiels
sont des fonctions mathématiques complexes construites par interconnexion
(addition) de fonctions élémentaires.
Rnmorph dessine à l'écran la sortie noir et blanc ou couleur de ce réseau de calculs en fonction des deux entrées x et y. Morph2d ne comporte aucun mécanisme d'apprentissage neuronal, la seule contrainte vis-à-vis des paramètres est un critère de rendement: chaque neurone doit varier sur au moins 10% de la surface de l'écran. Esc: quitter Tab: Enregistrer image Espace: Relancer un calcul (nouveau réseau) [1..9] 5,10,15... neurones sur les 2 couches
cachées
[F1..F12]
pour mode NumPad 4:
NumPad: 0: mode quantifié on/off
4: mode indirection + cycle indirection 3/6
entrées
5: mode 3D cycle 2D/3Dsurf/3Dlego |
| Morphon est un algorithme de morphogénèse inspiré
par les biomorphs de Richard Dawkins. C'est l'animation phénotypique
d'une promenade aléatoire dans l'espace des génotypes, comme
une séquence de portraits de familles.
F1-F12: plus ou moins vite
Tab: Sauve chaque plan dans morphonNN.tga
où NN est un nombre croissant
Echap: quitter |
Morphon is a morphogenesis program inspired by Richard Dawkins' biomorphs.
It's the phenotypic animation of a random walk in the space of genotypes,
like a sequence of family portraits.
F1-F12: more or less speed
Tab: Save each frame in morphonNN.tga where
NN is a growing number
Escape: leave |
| Synthèse sonore avec "réseau neuronal" constitué
de 9 modules dynamiques interconnectés. Le principe de modulation
de fréquence et le résultat sonore est proche des synthétiseurs
FM qui équipent les cartes son -simulation des instruments-. C'est
un son très electronique. Mais ici l'architecture est récursive
et il est possible de trouver des attracteurs plus ou moins chaotiques.
Entrée: état instantané aléatoire NumPad: 0: nouvelle architecture Entr: mutation de l'architecture (laisser appuyé) 4/7 ou souris click gauche+mvmt bas/haut:
5/8 ou souris click droit+mvmt bas/haut:
6/9 ou souris click droit+mvmt gauche/droite:
Appuyer simultanément sur une ou plusieurs touches [1..9] du clavier principal pour restreindre ces effets aux modules correspondants. |
Active agents (cells) can grow and
die on a 2D substrat according to
a "genetic program".
Each cell includes a number of variables,
( orientation, counter.. ) and the program
is composed of a strand of conditional
actions for each type (4 states) the cell
can take.
Conditions apply for the 4 neighbouring squares
and the internal variables, triggering actions
of growing, dying, type changing, reseting
the
program pointer or the variables...
Crude interface allows for playing, storing
and mixing various randly obtained programs.
default file=vegetal.veg
escape : quit
0 : new seedling ( from scratch : with
proba_base)
up/down : load next/previous seedling
of filein as current
+ shift : by step of 10
*Pad : mutate current seedling no reset
of the ground
EntrPad : daughter, new seedling mutated
from ONE seedling of the pool
+Pad : mating, new seedling from combination
of TWO seedlings of the pool
-Pad : soup: new seedling out of the
smallest pieces from the whole pool
/Pad : same as previous but no reset
of the ground
space : show the code of the current
seedling
. : clear the ground and restart the
current seedling
5 4 8 6 2 7: clear parts of the ground
< > : change the cell size (in pix)
and hence number of cells
pgup/pgdown slow/speed up
home/end freeze/release
s : save/append current seedling (asks
for fileout name)
a : append current seedling (to last
fileout)
l : load seedlings (asks for filein
name)
p : load new genetic pool
f : fill the pool with the current
seedling (avoid that one)
w : mutate current seedling
b : set the buffer (buffer=one seedling)
with the current seedling
r : set the current with the buffer
v : set the current with a mutation
from the buffer (left unchanged)
it allows to browse possible mutations of a given seedling
| Volpurna simule l'agitation de particules en interaction. Chaque
particule peut choisir soit de suivre son propre déplacement rectiligne
soit d'adopter le mouvement de la particule la plus proche au delà
d'une certaine distance. La probabilité de suivre plutôt son
"instinct" ou plutôt le mouvement des autres est réglée
par l'utilisateur, de même que la distance minimum d'interaction.
En manipulant ces paramètres globaux et leur variabilité
inter-individuelle il est possible d'explorer continuement différents
régimes collectifs, moléculaires, chaotiques, individualistes
ou totalitaires.
Notice incluse: appuyer espace |
| Editeur de polyhedres convexes et sortie de plans pour pliage
papier.
Espace: nouveau volume
click gauche: changement d'échelle
a: visualiser le découpage proposé
[F1..F8] + click gauche et ou droit + bouger
souris
Haut/bas/gauche/droite: différents styles |
| Illustration et preuve visuelle du vénérable théorème
de Pythagore, le carré de l'hypoténuse est égal à
la somme des carrés des côtés opposés. Ce qui
permet de trouver la distance dite euclidienne dans un repère cartésien:
d=racine_carrée(x²+y²)
J'ai utilisé ce résultat des centaines de fois, mon ordinateur des centaines de millions de fois, mais ce n'est que récemment que je me suis intéressé à sa logique. La "démonstration" proposée repose sur un découpage en 5 pièces, qui peuvent être assemblées pour former soit deux carrés de surface A² et B² soit un seul carré de surface A²+B². J'ignore si il existe un découpage plus simple... Bouger la souris pour modifier les côtés A et B Cliquer pour montrer/cacher les indications algébriques TAB pour une saisie d'écran dans "ypotenuz.tga" |