Fortraneries/BloubWorld
2022-02-17 12:23:01 +01:00
..
.gitignore + essai 2022-02-17 10:51:56 +01:00
bloubspace.f90 mergebloubs boilerplate done 2022-02-16 15:59:42 +01:00
encode.sh subroutine green_soylent in actio 2022-02-08 18:56:51 +01:00
essai.f90 + essai 2022-02-17 10:51:56 +01:00
exportbloubs.f90 subroutine green_soylent in actio 2022-02-08 18:56:51 +01:00
genbloubs.f90 mergebloubs boilerplate done 2022-02-16 15:59:42 +01:00
Makefile + essai 2022-02-17 10:51:56 +01:00
mathstuff.f90 mergebloubs boilerplate done 2022-02-16 15:59:42 +01:00
mergebloubs.f90 making spagetti code 2022-02-16 17:10:05 +01:00
movebloubs.f90 oups! 2022-02-16 17:10:36 +01:00
povstuff.f90 need more work :) 2022-02-16 14:29:29 +01:00
README.md moare doc 2022-02-16 20:07:26 +01:00
runme.sh mergebloubs boilerplate done 2022-02-16 15:59:42 +01:00
scene.pov cosmetic changes 2022-02-17 12:23:01 +01:00
toinc.awk first bloubspace run done 2022-02-06 23:45:08 +01:00

BloubWorld

C'est quoi ?

Le BloubWorld (que l'on appelle aussi BloubSpace) est un espace borné dans lequel se déplacent des bloubs, lesquels sont des sortes de particule munie de certaines propriétés (age, grosseur, vitesses, etc...). Lesquelles évoluent en fonction du temps.

Description d'un bloub

  type t_bloubs
    character(8)         :: nick
    logical              :: alive
    integer              :: num
    real                 :: px, py, pz
    real                 :: vx, vy, vz
    real                 :: radius
    integer              :: age
  end type t_bloubs

C'est simple, en fait. Le plus compliqué, c'est de savoir quoi en faire.

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.

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 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.

TODO

  • Concevoir un système de bouding box facile à utiliser
  • Réfléchir à une politique de vieillissement des bloubs