Spela med matematik: göra animerad GIF och HTML5 (10 / 15 steg)
Steg 10: Avancerade:-animerade Nautilus
(länk till HTML5 animerade versionen)
Detta är en av mina favoriter. Att göra spiralen var lätt (som framgår i föregående steg), men att göra chambers divisioner var en riktig utmaning.
Formel
OUT_PAUSE = false;
FIRST_FRAME_TIME = PI/4;
BREDD = 250;
RATIO = 1;
TIME_INCREMENT = 0,02;
X_MIN = -6; X_MAX = 6;
Y_MIN = -6; Y_MAX = 6;
STOMMEN = PI / TIME_INCREMENT;
färg rgb (x, y, t) {
float radie = dist (x, y, 0, 0); kartesiska till polar
float vinkel = ARCTAN2 (x, y); kartesiska till polar
flyta sint = sin(t);
IF(Sint<0) {
för negativa pitch, har sint positiv och förneka vinkel
Sint = - sint;
vinkel = - metar;
}
flyta lrad = log(radius) * 4 * sint;
float spiral = cos (vinkel/2 + lrad);
flyta divisioner =
spiral > 0
? synd (synd (vinkel * 4 + sint * lrad * sin(angle/2+lrad-PI/4)/8) * PI/2)
: -synd (synd (vinkel * 4 - sint * lrad * sin(angle/2+lrad-PI/4)/8) * PI/2 + PI);
flyta värde = spiral * divisioner;
värde = pow (värde * värde. 05); förtunning linjer
flyta luma = värde * 255;
återvända color(luma);
}