Fortraneries/BloubWorld/README.md

96 lines
3.1 KiB
Markdown
Raw Normal View History

2022-02-06 23:45:08 +01:00
# BloubWorld
C'est quoi ?
Le BloubWorld (que l'on appelle aussi BloubSpace) est un espace borné
2022-02-07 01:48:21 +01:00
dans lequel se déplacent des **bloubs**, lesquels sont
des sortes de particule
2022-02-16 20:07:26 +01:00
munie de certaines propriétés (age, grosseur, vitesses, etc...).
2022-03-18 12:21:40 +01:00
Lesquelles valeurs peuvent évoluer en fonction du temps.
2022-02-06 23:45:08 +01:00
2022-02-07 02:09:54 +01:00
## Description d'un bloub
2022-02-06 23:45:08 +01:00
2022-03-22 23:53:30 +01:00
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).
2022-03-18 12:21:40 +01:00
2022-02-06 23:45:08 +01:00
```
type t_bloubs
character(8) :: nick
2022-02-08 13:24:04 +01:00
logical :: alive
2022-03-18 12:21:40 +01:00
integer :: state
2022-03-22 23:53:30 +01:00
integer :: num ! ???
2022-02-06 23:45:08 +01:00
real :: px, py, pz
real :: vx, vy, vz
real :: radius
2022-03-22 23:53:30 +01:00
integer :: age, agemax
2022-02-06 23:45:08 +01:00
end type t_bloubs
```
2022-03-22 23:53:30 +01:00
C'est (preseque) simple, en fait.
Le plus compliqué, c'est de savoir quoi faire de ce fatras
de *bigdata*.
2022-02-06 23:45:08 +01:00
2022-03-22 23:53:30 +01:00
On peut fabriquer des gazillions de bloubs, et ensuite
2022-02-16 20:07:26 +01:00
les lacher dans un espace clôt, avec des parois
rebondissantes. Chaque choc va un peu les user, et au bout d'un moment,
2022-03-22 23:53:30 +01:00
ils vont mourir. C'est comme ça, c'est la vie des bloubs.
2022-02-16 20:07:26 +01:00
2022-02-06 23:45:08 +01:00
## Comment ça fonctionne ?
Pas trop mal pour un premier jet. Il suffit de lire
le script `runme.sh` pour avoir une idée de l'enchainement
2022-02-16 20:07:26 +01:00
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.
2022-03-22 23:53:30 +01:00
Ces opérations agissent sur des fichiers de type `.blbs` qui sont,
2022-02-16 20:07:26 +01:00
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.
### genbloubs
Fabrication d'une population de bloubs plus ou moins aléatoires.
Deux paramètres : le nom du fichier et le nombre de bloubs.
2022-03-22 23:53:30 +01:00
Les règles de génération *devraient* être paramétrables.
2022-02-16 20:07:26 +01:00
### movebloubs
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.
### exportbloubs
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.
2022-03-22 23:53:30 +01:00
**Le format de sortie est susceptible de changer sans préavis.**
2022-02-16 20:07:26 +01:00
2022-03-18 12:21:40 +01:00
Bon, pour le moment, il n'y a que POVray, mais Gnuplot arrivera en second.
2022-02-16 20:07:26 +01:00
### mergebloubs
2022-03-18 12:21:40 +01:00
Alors, celui-ci, il n'est pas vraiment au point. Il faut tout ré-écrire
et faire gaffe à l'explosion quadratique.
2022-02-06 23:45:08 +01:00
2022-02-07 01:48:21 +01:00
## TODO
- Concevoir un système de _bouding box_ facile à utiliser
- Réfléchir à une politique de vieillissement des bloubs
2022-03-18 12:21:40 +01:00
- le `merge` de deux bloubs est-il un acte politique ?
2022-02-07 01:48:21 +01:00