bloubworld: better doc

This commit is contained in:
tTh 2024-01-25 19:05:23 +01:00
parent 2b7012667a
commit 34da09281e
2 changed files with 46 additions and 40 deletions

View File

@ -7,36 +7,16 @@ dans lequel se déplacent des **bloubs**, lesquels sont
des sortes de particule des sortes de particule
munie de certaines propriétés (age, grosseur, vitesses, etc...). munie de certaines propriétés (age, grosseur, vitesses, etc...).
Lesquelles valeurs peuvent évoluer en fonction du temps. Lesquelles valeurs peuvent évoluer en fonction du temps.
Tout est expliqué dans ce [document](doc/what-is-a-bloub.md).
## Description d'un bloub la structure d'un bloub est (presque) simple, en fait.
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.
Le plus compliqué, c'est de savoir quoi faire de ce fatras Le plus compliqué, c'est de savoir quoi faire de ce fatras
de *bigdata*. de *bigdata*.
On peut fabriquer des gazillions de bloubs, et ensuite On peut fabriquer des gazillions de bloubs, et ensuite
les lacher dans un espace clôt, avec des parois 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. ils vont mourir. C'est comme ça, c'est la vie des bloubs.
## Comment ça fonctionne ? ## 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 le script `runme.sh` pour avoir une idée de l'enchainement
des opérations. Lequel enchainement est décrit plus bas. 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 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 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. 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 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. de fichier qui va être modifié assez souvent, ne gardez pas d'archives.
## Les logiciels
### genbloubs ### genbloubs
Fabrication d'une population de bloubs plus ou moins aléatoires. Fabrication d'une population de bloubs plus ou moins aléatoires.
Deux paramètres : le nom du fichier et le nombre de bloubs. Deux paramètres : le nom du fichier et le nombre de bloubs.
Les règles de génération *devraient* être paramétrables. Les règles de génération *devraient* être paramétrables.
[source](genbloubs.f90)
### movebloubs ### 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 les bloubs, gérer les rebonds avec la boudary-box, éliminer les
bloubs usés par les chocs, et faire naitre de nouveaux bloubs bloubs usés par les chocs, et faire naitre de nouveaux bloubs
si le besoin s'en fait sentir. 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 ### 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 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. ce qu'il faut pour les différents moteurs de rendu.
**Le format de sortie est susceptible de changer sans préavis.** **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 ### mergebloubs
Alors, celui-ci, il n'est pas vraiment au point. Il faut tout ré-écrire Alors, celui-ci, il n'est pas vraiment au point. Il faut tout ré-écrire
et faire gaffe à l'explosion quadratique. et faire gaffe à l'explosion quadratique.
[source](mergebloubs.f90)
## TODO ## TODO

View File

@ -2,14 +2,24 @@
## Philosophie ## 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 Un bloub est une entité mathématique qui vit
conneries. 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 ## 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 type t_bloubs
@ -23,17 +33,28 @@ Voici la version du _Sat 19 Feb 2022 12:37:42 AM CET_
end type t_bloubs end type t_bloubs
``` ```
Certains champs sont assez explicites, comme le nick, la position Certains champs sont assez explicites, comme le *nick*,
dans l'espace, le rayon (pour nous, un bloub est la position dans l'espace, le rayon (pour nous, un bloub est
une entité abstraite assimilable à une bubulle) une entité abstraite assimilable à une bubulle) ou la vitesse
ou la vitesse sur les trois axes. sur les trois directions de l'espace bloubeux.
D'autres, comme `alive`, sont D'autres, comme `alive`, sont plus délicates à expliquer,
plus délicates à expliquer, sauf si l'on considère que les sauf si l'on considère que les bloubs sont zombifiables.
bloubs sont zombifiables.
D'autres, comme l'age, sont bien plus sujettes à de diverses D'autres, comme l'age, sont bien plus sujettes à de diverses
interprétations. doit-on incrémenter l'age à chaque tick d'horloge interprétations. doit-on incrémenter l'age à chaque tick d'horloge
ou à chaque évènement discret ? Et à quel age un bloub devient-il ou à chaque évènement discret ? Et à quel age un bloub devient-il
trop vieux, à quel age va-t-il mourir ? 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.