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-02-07 01:48:21 +01:00
|
|
|
Lesquelles évoluent 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
|
|
|
|
|
|
|
```
|
|
|
|
type t_bloubs
|
|
|
|
character(8) :: nick
|
2022-02-08 13:24:04 +01:00
|
|
|
logical :: alive
|
2022-02-06 23:45:08 +01:00
|
|
|
integer :: num
|
|
|
|
real :: px, py, pz
|
|
|
|
real :: vx, vy, vz
|
|
|
|
real :: radius
|
2022-02-16 20:07:26 +01:00
|
|
|
integer :: age
|
2022-02-06 23:45:08 +01:00
|
|
|
end type t_bloubs
|
|
|
|
```
|
|
|
|
|
|
|
|
C'est simple, en fait. Le plus compliqué, c'est de savoir quoi en faire.
|
|
|
|
|
2022-02-16 20:07:26 +01:00
|
|
|
On peut en fabriquer des gazillions, 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,
|
|
|
|
ils vont mourir. C'est comme ça.
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Ces opérations agissent sur des fichiers de type `.blsb` 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.
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|
|
|
Bon, pour le moment, il n'y a que POVray :)
|
|
|
|
|
|
|
|
### mergebloubs
|
|
|
|
|
|
|
|
Alors, celui-ci, il n'est pas vraiment au point.
|
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
|
|
|
|
|