Fortraneries/BloubWorld/doc/what-is-a-bloub.md

114 lines
4.1 KiB
Markdown
Raw Normal View History

2022-02-19 11:32:35 +11:00
# What is a bloub ?
## Philosophie
2024-01-26 05:05:23 +11:00
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.
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...
2022-02-19 11:32:35 +11:00
## Technique
2024-01-26 12:33:31 +11:00
Un bloub est caractérisé par un certain nombre de valeurs,
rangées dans une structure de donnée.
Ces valeurs représentent des choses comme la position,
la taille, l'age et la couleur d'un bloub.
En voici la version Fortran du _Fri Jan 26 00:58:37 UTC 2024_,
c'est à dire presque (mais pas que) complètement différente
de l'état actuel ou possible du logiciel. Il faut noter que
certains champs ne sont pas encore utilisés.
2022-02-19 11:32:35 +11:00
```
type t_bloubs
character(8) :: nick
logical :: alive
2024-01-26 12:33:31 +11:00
integer :: state
2022-02-19 11:32:35 +11:00
integer :: num ! ???
real :: px, py, pz
real :: vx, vy, vz
real :: radius
2024-01-26 12:33:31 +11:00
real :: density
integer :: age, agemax
integer :: red, green, blue
2022-02-19 11:32:35 +11:00
end type t_bloubs
```
2024-01-26 05:05:23 +11:00
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.
2022-02-19 11:32:35 +11:00
2024-01-28 11:43:23 +11:00
D'autres, comme age et agemax, sont bien plus sujettes à de diverses
2022-02-19 11:32:35 +11:00
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 ?
2024-01-26 12:33:31 +11:00
## La fusion des blobs
Quand deux bloubs se rencontrent (en première approche, cela veut
dire que leurs surfaces se recoupent) il y a bien entendu quelque
chose qui se déclenche. En général, c'est la fusion des deux
bloubs. Mais une fusion de bloubs, c'est quoi ?
Je pense qu'il y a une infinité de possibilités, je vais me contenter
d'expliquer la démarche que j'ai suivie.
Tout d'abord, pour la fusion de certains paramètres, comme la position
ou la vitesse, on va faire simple : une moyenne sans pondération.
Précis et efficace.
Pour d'autres (le nick & le num) je n'ai pas d'idée bien précise,
il y a peut-être la notion de « nick dominant » à définir.
Par contre, c'est peut-être sur les valeurs 'corporelles' :
taille, densité, age et couleur qu'il y a des choses à faire.
* Taille : c'est le `radius` d'une sphere -> somme des volumes
* Densité : cette valeur n'est actuellement pas gérée
* Age : (somme des deux ages) * coefficient
* Agemax : (maximum des deux agemaxs) - forfait
* Couleurs : un système de mutation selon critères ?
2024-01-28 11:43:23 +11:00
Il ne reste qu'à coder tout ça...
## Analyse de population
Nous avons des moyens assez simple d'enregistrer l'état complet
de la population de bloubs à chaque itération.
La meilleure preuve étant les vidéos publiés dans les peertubes.
Mais nous devrions plus nous pencher sur les aspects statistiques,
comme la démographie, l'état de santé, la pyramide des ages...
Les traitements simples peuvent faire appel à Awk et Gnuplot.
Pour les visions plus avancées, un logiciel spécialisé sera
le bienvenu, et **R** est un bon candidat potentiel.
On peut aussi envisager la pureté du code Fortran,
couplé avec un *toolkit* graphique comme XXX.
Il ne reste qu'à coder tout ça...
2024-01-26 12:33:31 +11:00
2024-01-26 05:05:23 +11:00
## 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.
2024-01-26 12:33:31 +11:00
<u>tTh, janvier 2024</u>
2024-01-26 05:05:23 +11:00
2022-02-19 11:32:35 +11:00