Spinning soccer ball

Here you can link to screenshots and demos etc. of programs made using BBC BASIC
Richard Russell
Posts: 272
Joined: Tue 18 Jun 2024, 09:32

Spinning soccer ball

Post by Richard Russell »

I have no interest whatever in the football, but here's a spinning truncated icosahedron (delete the *REFRESH commands to run in ARM BASIC):

https://youtu.be/6I7JCuzG_GU

Code: Select all

   10 REM Spinning soccer ball
   20 REM!Keep p, q, r, s, t
   30 MODE 9 : OFF
   40 ORIGIN 640,512 : COLOUR 130
   50 DIM xyz(59,2), tmp(59,2), b(2,2), c(2,2)
   60 s = SQR5 + 1 : p = s/2 : q = p+2 : r = s+1 : t = p*3
   70 FOR I% = 0 TO 59
   80   READ xyz(I%,0), xyz(I%,1), xyz(I%,2)
   90 NEXT
  100 *REFRESH OFF
  110 b = 0.5 : c = 0
  120 b() = COS(b), 0, SIN(b), 0, 1, 0, -SIN(b), 0, COS(b)
  130 REPEAT
  140   c() = COS(c), -SIN(c), 0, SIN(c), COS(c), 0, 0, 0, 1
  150   c() = c() . b() : tmp() = xyz() . c()
  160   CLS
  170   GCOL 3 : CIRCLE FILL 0, 0, 432 : GCOL 0
  180   I% = 0
  190   FOR J% = 0 TO 11
  200     z = 0
  210     FOR K% = I% TO I% + 4
  220       z += tmp(K%,1)
  230     NEXT
  240     FOR K% = 0 TO 4
  250       X% = 3200 * tmp(I%,0) / (36 + tmp(I%,1))
  260       Y% = 3200 * tmp(I%,2) / (36 + tmp(I%,1))
  270       IF K%<2 MOVE X%,Y% ELSE IF z<-2.5 PLOT 85,X%,Y%
  280       I% += 1
  290     NEXT
  300   NEXT J%
  310   WAIT : *REFRESH
  320   c += 0.03
  330 UNTIL FALSE
  340 END
  350
  360 DATA 0, 1, t, -p, 2, r, p, 2, r, -1, q, s, 1, q, s
  370 DATA 0, 1, -t, -p, 2, -r, p, 2, -r, -1, q, -s, 1, q, -s
  380 DATA 0, -1, t, -p, -2, r, p, -2, r, -1, -q, s, 1, -q, s
  390 DATA 0, -1, -t, -p, -2, -r, p, -2, -r, -1, -q, -s, 1, -q, -s
  400 DATA 1, t, 0, 2, r, -p, 2, r, p, q, s, -1, q, s, 1
  410 DATA 1, -t, 0, 2, -r, -p, 2, -r, p, q, -s, -1, q, -s, 1
  420 DATA -1, t, 0, -2, r, -p, -2, r, p, -q, s, -1, -q, s, 1
  430 DATA -1, -t, 0, -2, -r, -p, -2, -r, p, -q, -s, -1, -q, -s, 1
  440 DATA t, 0, 1, r, -p, 2, r, p, 2, s, -1, q, s, 1, q
  450 DATA t, 0, -1, r, -p, -2, r, p, -2, s, -1, -q, s, 1, -q
  460 DATA -t, 0, 1, -r, -p, 2, -r, p, 2, -s, -1, q, -s, 1, q
  470 DATA -t, 0, -1, -r, -p, -2, -r, p, -2, -s, -1, -q, -s, 1, -q