' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.12.16.16.28]) on 2024.03.26 at 03:10 (Coordinated Universal Time) ' 🟠🟠🟠REMARKS ' This program by Charlie Veniot is a port and mod ' of a QBJS program by vince ' 🟠🟠🟠DECLARATIONS sw = 430 : sh = 400 : d = 700 : z0 = 1500 DIM x(16), y(16), z(16), w(16) x( 0) = 0-1 : y( 0) = 0-1 : z( 0) = 0-1 : w( 0) = 0-1 x( 1) = 1 : y( 1) = 0-1 : z( 1) = 0-1 : w( 1) = 0-1 x( 2) = 1 : y( 2) = 1 : z( 2) = 0-1 : w( 2) = 0-1 x( 3) = 0-1 : y( 3) = 1 : z( 3) = 0-1 : w( 3) = 0-1 x( 4) = 0-1 : y( 4) = 0-1 : z( 4) = 1 : w( 4) = 0-1 x( 5) = 1 : y( 5) = 0-1 : z( 5) = 1 : w( 5) = 0-1 x( 6) = 1 : y( 6) = 1 : z( 6) = 1 : w( 6) = 0-1 x( 7) = 0-1 : y( 7) = 1 : z( 7) = 1 : w( 7) = 0-1 x( 8) = 0-1 : y( 8) = 0-1 : z( 8) = 0-1 : w( 8) = 1 x( 9) = 1 : y( 9) = 0-1 : z( 9) = 0-1 : w( 9) = 1 x(10) = 1 : y(10) = 1 : z(10) = 0-1 : w(10) = 1 x(11) = 0-1 : y(11) = 1 : z(11) = 0-1 : w(11) = 1 x(12) = 0-1 : y(12) = 0-1 : z(12) = 1 : w(12) = 1 x(13) = 1 : y(13) = 0-1 : z(13) = 1 : w(13) = 1 x(14) = 1 : y(14) = 1 : z(14) = 1 : w(14) = 1 x(15) = 0-1 : y(15) = 1 : z(15) = 1 : w(15) = 1 DECLARE SUB proj(x, y, z, w) ' 🟠🟠🟠MAIN PROGRAM SCREEN _NEWIMAGE(sw, sh, 32) DO FOR t = 0 TO 2 * _PI STEP 0.01 CLS FOR xa = -1 TO 1 : FOR ya = -1 TO 1 f = 0 i = 0 CALL proj( x( i ), y( i ), z( i ), w( i ) ) PSET ( p + xa, q + ya ) FOR i= 1 TO 2 CALL proj( x( i ), y( i ), z( i ), w( i ) ) LINE -( p + xa, q + ya ), _RGB( 0, 255, 0) NEXT i = 0 CALL proj( x( i ), y( i ), z( i ), w( i ) ) LINE -( p + xa, q + ya ),_RGB( 0, 255, 0 ) k = 4 FOR i = 0 TO 2 CALL proj( x( i ), y( i ), z( i ), w( i ) ) PSET ( p + xa, q + ya ) CALL proj( x( k ), y( k ), z( k ), w( k ) ) LINE -( p + xa, q + ya ), _RGB( 0, 255, 255 ) NEXT FOR i = 0 TO 2 CALL proj( x( i ), y( i ), z( i ), w( i ) ) PSET ( p + xa, q + ya ), _RGB( 255, 0, 0 ) CIRCLE ( POINT( 0 ), POINT( 1 ) ), 4, _RGB( 255, 0, 0), , , , T k = 9 CALL proj( x( k ), y( k ), z( k ), w( k ) ) LINE -( p + xa, q + ya ), _RGB( 255, 255, 0 ) CIRCLE ( POINT( 0 ), POINT( 1 ) ), 4, _RGB( 255, 0, 0), , , , T NEXT k = 4 CALL proj ( x( k ), y( k ), z( k ), w( k ) ) LINE -( p + xa, q + ya ), _RGB( 255, 255, 0 ) CIRCLE ( POINT( 0 ), POINT( 1 ) ), 4, _RGB( 255, 0, 0 ), , , , T NEXT ya : NEXT xa SLEEP 0.01 NEXT LOOP ' 🟠🟠🟠SUBROUTINE SUB proj( x, y, z, w ) xx = x yy = y * COS( t ) - w * SIN( t ) zz = z ww = y * SIN( t ) + w * COS( t ) d2 = 3 w0 = 3 xx = xx * d2 / ( w0 + ww ) yy = yy * d2 / ( w0 + ww ) zz = zz * d2 / ( w0 + ww ) xxx = xx * COS( 0 ) - zz * SIN( 0 ) zzz = xx * SIN( 0 ) + zz * COS( 0 ) xx = xxx zz = zzz a = _PI / 3 b = _PI / 8 xxx = xx * COS( a ) - yy * SIN( a ) yyy = xx * SIN( a ) + yy * COS( a ) xx = xxx yy = yyy yyy = yy * COS( b ) - zz * SIN( b ) zzz = yy * SIN( b ) + zz * COS( b ) yy = yyy zz = zzz xx = 100 * xx yy = 100 * yy zz = 100 * zz p = sw / 2 + 2 * xx * d / ( yy + z0 ) q = sh / 2.9 - 2 * zz * d / ( yy + z0 ) END SUB