diff --git a/.gitignore b/.gitignore index ab8ba5b..683ab7a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ starfield randomwalk oscilloscope lissajous +squarmania diff --git a/Makefile b/Makefile index b3bf45c..1b36380 100644 --- a/Makefile +++ b/Makefile @@ -57,3 +57,13 @@ lissajous.png: lissajous Makefile convert WS/a.tga $@ # ----------------------------------------------- + +squarmania: squarmania.f90 Makefile genplotting.o + gfortran -Wall $< genplotting.o -o $@ + +squarmania.png: squarmania Makefile + ./squarmania + genplot2 -s 512x512 WS/squarmania.scratch WS/a.tga + convert WS/a.tga $@ + +# ----------------------------------------------- diff --git a/squarmania.f90 b/squarmania.f90 new file mode 100644 index 0000000..558e8ca --- /dev/null +++ b/squarmania.f90 @@ -0,0 +1,50 @@ +! +! SQUARMANIA +! new Thu Apr 23 04:27:03 PM UTC 2026 +! +! this crapware is released by tTh under the +! DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE +! +program squarmania + use genplotting + implicit none + + write (0, '(A)') "----[ genplotting squarmania ]----" + + call genp_init (0, 'WS/squarmania.scratch') + call do_squarmania (35, 0.93) + call genp_end (0) + +contains +! --------------------------------------------------------- +subroutine do_squarmania (nbr, k0) + integer, intent(in) :: nbr + real, intent(in) :: k0 + + integer :: idx + real :: xa, xb, xc, xd, ya, yb, yc, yd + real :: va, vb, vc, vd, wa, wb, wc, wd, k2 + + k2 = 1.0 - k0 + xa = 1 ; ya = 1 ; xb = 1 ; yb = -1 + xc = -1 ; yc = -1 ; xd = -1 ; yd = 1 + + do idx=1, nbr + call genp_move(xa, ya) + call genp_draw(xb, yb, 1) ; call genp_draw(xc, yc, 2) + call genp_draw(xd, yd, 3) ; call genp_draw(xa, ya, 4) + + va = k0*xa + k2*xb ; wa = k0*ya + k2*yb + vb = k0*xb + k2*xc ; wb = k0*yb + k2*yc + vc = k0*xc + k2*xd ; wc = k0*yc + k2*yd + vd = k0*xd + k2*xa ; wd = k0*yd + k2*ya + + xa = va ; xb = vb ; xc = vc ; xd = vd + ya = wa ; yb = wb ; yc = wc ; yd = wd + + enddo + +end subroutine + +! --------------------------------------------------------- +end program