Inici Programació Basic
Warthog és un algorisme que vaig veure publicat per primera vegada a un número de la revista "Investigación y ciencia" a l'any 1990. L'algorisme és molt simple. Considerem un nombre natural F i la successió de valors definits per la funció N^3/F amb N=1,2,3,....,F. L'algorisme consisteix en enllaçar F segments d'igual longitud de manera que el punt final de cada segment sigui el punt inicial del següent i l'orientació del segment vingui definida per la part fraccionaria de N^3/F (valors de 0 a 1) de manera que 0 representi el rumb de 0º i 1 representi el rumb de 360º. El resultat són figures geomètriques sorprenents amb eixos de simetria, i que a vegades recorden vagament a insectes, flors, fantasmes, joies, i altres. Per a cada valor de F, s'obtenen figures diferents, augmentant la complexitat al incrementar el nombre de segments, i reproduint-se certs patrons. Hom es planteja que com és possible que una funció tant simple obtingui resultats tant artístics? I arribem a la conclusió que la natura empra les matemàtiques per aconseguir la seva bellesa i diversitat.
.png)




Baixar codi: warthog.sdlbas
// Warthog figures // Adapted from 1990 article in "American Scientific" // Tested first time in 90' using my ZX Spectrum 48K // Pere Casellas // version 20180520 using sdlBasic // GNU GPL 3.0 setDisplay( 1000, 650, 16, 2 ) setcaption("Warthog") // Initial variables //for f =1 to 250 //printS(f) // Change the parameter f to obtain incredible figures f=1998 fprintS( "Segments number is:") printS(f) k=13 // segment units x=450 // initial x y=125 // initial y pi = 3.14159265 // Figure made of f segments for n =1 to f // Define colors if n<=f/3 then ink(rgb(255,0,0)) end if if n>f/3 then ink(rgb(0,255,0)) end if if n>(2*f/3) then ink(rgb(0,0,255)) end if // Warthog function zz=(n^3)/f z=2*pi*(zz-int(zz)) // angle as fractional part of zz x1=k*cos(z) y1=k*sin(z) xx=x+x1 yy=y+y1// Draw segment line(x,y,xx,yy) // Define initial point x=xx y=yy next wait(100) waitKey cls //next