Le 20/05/2022 à 10:22, HB a écrit :
bonjour,
bon ... je répond à plein de choses ... :
1°) Quand je dis "aléatoires" c'est que je veux pouvoir répéter le
processus et obtenir des choses différentes imprévisibles...
2°) Pour les curieux ;o)
En fait l'idée m'est venu en voyant ça au MOMA de NY
https://drive.google.com/file/d/1TmBSwwnHqS70QkNI9PDC8DxMYykcGm1O/view?usp=sharing
Une idée d'algorithme, incluant la possibilité de revenir un peu
en arrière.
1) Choisir un petit pas d'incrémentation en x (mettons dx = 1/100),
un petit pas d'avancement (mettons dl = 1/100), une distance
minimum entre les courbes (mettons dm = 5/100), un angle maximum
par rapport à l'horizontale (mettons am = 100 degrés pour permettre
d'aller en arrière), un changement d'angle maximum quand tout se
passe bien (mettons da = 30 degrés).
2) Choisir au hasard N valeurs entre 0+dm et 1-dm, en s'assurant que
ces valeurs sont toutes distantes d'au moins dm deux à deux.
Choisir aussi un angle entre −am et +am pour chaque valeur.
3) Pour x0 allant de dx à 1 par pas de dx, on va faire avancer chaque
courbe jusqu'à ce qu'elle atteigne l'abscisse x0. À chaque nouvel
x0 on peut choisir aléatoirement dans quel ordre on va traiter
chaque courbe.
3.1) Pour la courbe choisie, on peut faire varier un peu la
direction d'avancement dans les limites de ±da pour la
variation et de ±am pour la valeur finale. On vérifie que
le point d'arrivée (en avançant de dl) reste suffisamment
loin des autres courbes (et des points précédents de la même
courbe), et aussi des valeurs y=0, y=1 et x=0. On peut être
plus malin en prévoyant aussi d'être loin de ce que pourraient
être les autres courbes si elles continuaient tout droit et
que nous restions dans les limites permises par ±da (en gros
voir s'il y a intersection entre une droite et un cercle).
3.2) On stocke dans un tableau la nouvelle position (x, y) pour
pouvoir comparer les positions respectives de toutes les
courbes.
3.3) Tant qu'on n'a pas atteint le x0 qui est notre objectif à
cette étape, on continue avec la même courbe.
3.4) Sécurité : à tout moment, si on ne peut pas empêcher une
intersection avec une autre courbe ou les bords de la zone,
on ignore la contrainte sur ±da et on choisit un point qui
l'évite.
3.5) Lorsque la courbe atteint ou dépasse x0, on passe à une autre
courbe. Si c'est plus simple, on peut alors stocker (x0, y)
au lieu de (x, y) pour le dernier point de cette courbe.
3.6) Lorsque toutes les courbes ont atteint x0, on incrémente x0
de dx et on recommence.
4) Lorsque toutes les courbes ont atteint x0 = 1, on s'arrête.
-- Olivier Miakinen