Plasma type stuff

Previous topic - Next topic

MrTAToad

This could do with a bit of optimisation, but works quite well :

Code (glbasic) Select
// --------------------------------- //
// Project: Plasma
// Start: Wednesday, March 11, 2009
// IDE Version: 6.184

TYPE tCosTable
value
ENDTYPE

TYPE tColour
value%
ENDTYPE

GLOBAL cosTable[] AS tCosTable
GLOBAL colourTable[] AS tColour
LOCAL loop%
LOCAL x%
LOCAL y%
LOCAL screenWidth%
LOCAL screenHeight%
LOCAL cTable AS tCosTable
LOCAL cColour AS tColour
LOCAL wave%
LOCAL pos1
LOCAL pos2

GETSCREENSIZE screenWidth%,screenHeight%

// Create COS table
FOR loop%=0 TO  screenWidth%*2
cTable.value=SIN(360.0*loop%/320.0)*32+32
DIMPUSH cosTable[],cTable
NEXT

FOR loop%=0 TO 255
cColour.value%=RGB(0,0,loop%)
DIMPUSH colourTable[],cColour
NEXT

wave%=0

WHILE KEY(1)=FALSE
INC wave%,6
IF wave%>320
wave%=0
ENDIF

FOR y%=0 TO screenHeight%/2
       pos1 = cosTable[y%+wave%].value

STARTPOLY -1
FOR x% = 0 TO screenWidth%/2
pos2 = (cosTable[x%+wave%].value + cosTable[x%+y%].value + pos1)
       
        POLYVECTOR x%*2,y%*2,0,0,colourTable[pos2].value%
        POLYVECTOR (x%*2)+1,(y%*2)+1,0,0,colourTable[pos2].value%
        POLYVECTOR x%*2,(y%*2)+1,0,0,colourTable[pos2].value%
        NEXT
        ENDPOLY
    NEXT

    PRINT wave%+" "+pos2,0,0
    SHOWSCREEN
WEND

END

MrTAToad

Code (glbasic) Select
Slightly modified version :

[code // ---------------------------------
// Project: Plasma
// Start: Wednesday, March 11, 2009
// IDE Version: 6.184

TYPE tCosTable
value
ENDTYPE

TYPE tColour
value%
ENDTYPE

GLOBAL cosTable[] AS tCosTable
GLOBAL colourTable[] AS tColour
LOCAL loop%
LOCAL x%
LOCAL y%
LOCAL screenWidth%
LOCAL screenHeight%
LOCAL cTable AS tCosTable
LOCAL cColour AS tColour
LOCAL wave%
LOCAL pos1
LOCAL pos2
LOCAL stp% = 16

GETSCREENSIZE screenWidth%,screenHeight%

//  Create COS table
FOR loop%=0 TO screenWidth%*2
cTable.value=SIN(360.0*loop%/320.0)*32+32
DIMPUSH cosTable[],cTable
NEXT

FOR loop%=0 TO 255
cColour.value%=RGB(0,0,loop%)
DIMPUSH colourTable[],cColour
NEXT

wave%=0

WHILE KEY(1)=FALSE
INC wave%,6
IF wave%>320
wave%=0
ENDIF

FOR y%=0 TO screenHeight%-1 STEP stp%
        pos1 = cosTable[y%+wave%].value

FOR x% = 0 TO screenWidth%-1 STEP stp%
pos2 = (cosTable[x%+wave%].value + cosTable[x%+y%].value + pos1)
STARTPOLY -1
POLYVECTOR x%+stp%,y%,0,0,cosTable[pos2].value
POLYVECTOR x%,y%,0,0,cosTable[pos2].value
POLYVECTOR x%,y%+stp%,0,0,cosTable[pos2].value
POLYVECTOR x%+stp%,y%+stp%,0,0,cosTable[pos2].value
        ENDPOLY
        NEXT
   NEXT
   SHOWSCREEN
WEND

END

MrTAToad

Yes, its one thing that does need sorting.