Les pointes des cheveux rouges d’une anguille électrique en accéléré et au ralenti : conversion du code de traitement P5.JS vers Wolfram
Les pointes des cheveux rouges d’une anguille électrique en accéléré et au ralenti : conversion du code de traitement P5.JS vers Wolfram
par Vitaliy Kaurov
Illustration originale
Illustration originale
◼
◼
a=(x,y,d=mag(k=4*cos(x/21),e=y/8-20))=>circle((q=3*sin(k*2)+.3/k+sin(y/19)*k*(9+2*sin(e*14-d*3+t*2)))+50*cos(c=d-t)+200,q*sin(c)+d*39-475,k*k>15?2:1)
t=0,draw=$=>{t||createCanvas(w=400,w);background(9).noStroke().fill(w,116);for(t+=PI/240,i=1e4;i--;)a(i,i/235)}
t=0,draw=$=>{t||createCanvas(w=400,w);background(9).noStroke().fill(w,116);for(t+=PI/240,i=1e4;i--;)a(i,i/235)}
Interface interactive / application Wolfram
Interface interactive / application Wolfram
Conversion interprétée en Wolfram Language avec une couleur rouge ajoutée aux pointes des cheveux :
In[]:=
ClearAll["`*"];x = N@Range[0, 9999]; y = x/235;k = 4 Cos[x/21];tipsMask = Thread[k^2 > 15];baseMask = Thread[k^2 <= 15];pts[t_] := Module[{e, d, c, q}, e = y/8 - 20.; d = Sqrt[k^2 + e^2]; c = d - t; q = 3 Sin[2 k] + 0.3/k + Sin[y/19] k (9 + 2 Sin[14 e - 3 d + 2 t]); Transpose @ {q + 50 Cos[c] + 200, 400 - (q Sin[c] + 39 d - 475)}];Manipulate[ DynamicModule[{currentPts = pts[t]}, Graphics[ {Blend[{White,Red},Sin[t]^2], Opacity[.5], PointSize[.01], Point[Pick[currentPts, tipsMask]], White, Opacity[.75], PointSize[.0025], Point[Pick[currentPts, baseMask]]}, PlotRange -> {{100, 300}, {75, 320}}, Background -> Black, ImageSize -> 550 ] ], {t, 0, 2 Pi, Appearance -> "Labeled"}, SaveDefinitions -> True]
Out[]=
GiF animé Wolfram
GiF animé Wolfram
Nous décalons l’animation avec un déphasage différent du mouvement périodique :
delta=Pi/3;
ainsi, le segment final pour le ralenti met bien en valeur l’éclairage des pointes de cheveux rouges :
shift=Pi/2;
Segment 1 du mouvement rapide régulier :
In[]:=
frm1=ParallelTable[DynamicModule[{currentPts=pts[t]},Graphics[{Blend[{White,Red},Sin[t]^2],Opacity[.5],PointSize[.01],Point[Pick[currentPts,tipsMask]],White,Opacity[.75],PointSize[.0025],Point[Pick[currentPts,baseMask]]},PlotRange->{{100,300},{75,320}},Background->Black,ImageSize->550]],{t,0+shift,2Pi-delta+shift,Pi/50}];
Segment 2 du mouvement ralenti (images plus fréquentes à des incréments de temps plus petits) :
In[]:=
frm2=ParallelTable[DynamicModule[{currentPts=pts[t]},Graphics[{Blend[{White,Red},Sin[t]^2],Opacity[.5],PointSize[.01],Point[Pick[currentPts,tipsMask]],White,Opacity[.75],PointSize[.0025],Point[Pick[currentPts,baseMask]]},PlotRange->{{100,300},{75,320}},Background->Black,ImageSize->550]],{t,2Pi-delta+shift,2Pi+shift,Pi/270}];
Nombre total d’images :
In[]:=
Join[frm1,frm2]//Length
Out[]=
175
Génération du GiF :
Export["critter.gif",Join[frm1,frm2],ImageSize->550,"DisplayDurations"->.03]
CITER CE NOTEBOOK
CITER CE NOTEBOOK
Les pointes des cheveux rouges d’une anguille électrique en accéléré et au ralenti : conversion du code de traitement P5.JS vers Wolframpar Vitaliy KaurovCommunauté Wolfram, CHOIX DE L’ÉQUIPE, 8 mai 2026https://community.wolfram.com/groups/-/m/t/3713047

