diff --git a/BloubWorld/README.md b/BloubWorld/README.md index 137237a..5f06f6d 100644 --- a/BloubWorld/README.md +++ b/BloubWorld/README.md @@ -7,36 +7,16 @@ dans lequel se déplacent des **bloubs**, lesquels sont des sortes de particule munie de certaines propriétés (age, grosseur, vitesses, etc...). Lesquelles valeurs peuvent évoluer en fonction du temps. +Tout est expliqué dans ce [document](doc/what-is-a-bloub.md). -## Description d'un bloub - -Attention cette description n'est qu'un exemple, mais les points -essentiels de la première étape sont là. -Les caractériques dynamiques : position et vélocités. -Coté physique : l'age en bloubcycle (avec un maximum), la taille, -un petit nom, et un état (coucou la FSM). - - -``` - type t_bloubs - character(8) :: nick - logical :: alive - integer :: state - integer :: num ! ??? - real :: px, py, pz - real :: vx, vy, vz - real :: radius - integer :: age, agemax - end type t_bloubs -``` - -C'est (preseque) simple, en fait. +la structure d'un bloub est (presque) simple, en fait. Le plus compliqué, c'est de savoir quoi faire de ce fatras de *bigdata*. On peut fabriquer des gazillions de bloubs, et ensuite les lacher dans un espace clôt, avec des parois -rebondissantes. Chaque choc va un peu les user, et au bout d'un moment, +rebondissantes. +Chaque choc va un peu les user, et au bout d'un moment, ils vont mourir. C'est comme ça, c'est la vie des bloubs. ## Comment ça fonctionne ? @@ -45,8 +25,6 @@ Pas trop mal pour un premier jet. Il suffit de lire le script `runme.sh` pour avoir une idée de l'enchainement des opérations. Lequel enchainement est décrit plus bas. -## Les logiciels - Pour le moment, l'ensemble des opérations est gérée par un script shell qui enchaine des opérations plus élémentaires. Oui, je sais, ce n'est pas optimal, mais c'est un cadre idéal pour les bricolages hasardeux. @@ -55,11 +33,15 @@ Ces opérations agissent sur des fichiers de type `.blbs` qui sont, vu du fortran, des dumps séquentiels du type t_bloubs. Un format de fichier qui va être modifié assez souvent, ne gardez pas d'archives. +## Les logiciels + + ### genbloubs Fabrication d'une population de bloubs plus ou moins aléatoires. Deux paramètres : le nom du fichier et le nombre de bloubs. Les règles de génération *devraient* être paramétrables. +[source](genbloubs.f90) ### movebloubs @@ -67,9 +49,9 @@ Le cœur actif du système : c'est lui qui, à chaque tick, va déplacer les bloubs, gérer les rebonds avec la boudary-box, éliminer les bloubs usés par les chocs, et faire naitre de nouveaux bloubs si le besoin s'en fait sentir. +Seul problème, il n'a pas de notion directe du temps, parce qu'il est juste de passage dans un pipeline. +[source](movebloubs.f90) -Seul problème, il n'a pas de notion directe du temps, parce qu'il est -juste de passage dans un pipeline. ### exportbloubs @@ -77,13 +59,16 @@ Sortie sur `stdout` de certaines propriétes des bloubs, qui seront reprise par un (ou des) scripts écrits en `awk`, afin de générer ce qu'il faut pour les différents moteurs de rendu. **Le format de sortie est susceptible de changer sans préavis.** +Bon, pour le moment, dans les formats il n'y a que POVray, +mais Gnuplot et/ou Rdata arriveront bien un de ces jours.[source](exportbloubs.f90) + -Bon, pour le moment, il n'y a que POVray, mais Gnuplot arrivera en second. ### mergebloubs Alors, celui-ci, il n'est pas vraiment au point. Il faut tout ré-écrire et faire gaffe à l'explosion quadratique. +[source](mergebloubs.f90) ## TODO diff --git a/BloubWorld/doc/what-is-a-bloub.md b/BloubWorld/doc/what-is-a-bloub.md index bd6cfac..c79d93e 100644 --- a/BloubWorld/doc/what-is-a-bloub.md +++ b/BloubWorld/doc/what-is-a-bloub.md @@ -2,14 +2,24 @@ ## Philosophie -Bonne question, mais nous n'avons pas le temps, point suivant ? +Bonne question, mais nous n'avons pas le temps, point +suivant ? En fait, si, il est tard, mais j'ai envie de +raconter des conneries. -En fait, si, il est tard, mais j'ai envie de raconter des -conneries. +Un bloub est une entité mathématique qui vit +dans un espace cartésien abstrait, bien que normé. +Il peut aussi être borné, soit en mode "boite", soit +en mode "tore". La notion de champ de gravité est +ignoré, parce qu'un bloub se moque d'avoir une masse. +Par contre les bloubs peuvent interagir entre eux +de divers manières : rebond (genre billard), échange +de données, fusion volumique... ## Technique -Voici la version du _Sat 19 Feb 2022 12:37:42 AM CET_ +Voici la version du _Sat 19 Feb 2022 12:37:42 AM CET_, +c'est à dire complètement différente de l'état actuel +du logiciel. ``` type t_bloubs @@ -23,17 +33,28 @@ Voici la version du _Sat 19 Feb 2022 12:37:42 AM CET_ end type t_bloubs ``` -Certains champs sont assez explicites, comme le nick, la position -dans l'espace, le rayon (pour nous, un bloub est -une entité abstraite assimilable à une bubulle) -ou la vitesse sur les trois axes. -D'autres, comme `alive`, sont -plus délicates à expliquer, sauf si l'on considère que les -bloubs sont zombifiables. +Certains champs sont assez explicites, comme le *nick*, +la position dans l'espace, le rayon (pour nous, un bloub est +une entité abstraite assimilable à une bubulle) ou la vitesse +sur les trois directions de l'espace bloubeux. +D'autres, comme `alive`, sont plus délicates à expliquer, +sauf si l'on considère que les bloubs sont zombifiables. D'autres, comme l'age, sont bien plus sujettes à de diverses interprétations. doit-on incrémenter l'age à chaque tick d'horloge ou à chaque évènement discret ? Et à quel age un bloub devient-il trop vieux, à quel age va-t-il mourir ? +## Et pour la suite ? + +Au fil du temps, le bloub évolue et se complexifie. +La prochaine itération sera dotée d'un attribut de couleur et +d'amusantes fonctions pour mixer ces couleurs si deux bloubs +se trouvent à fusionner. +On peut aussi envisager de les munir d'un spin non entier +dans le but assumé d'augmenter la complexité des rencontres +interbloubs. + + +