In this example the ( x, y) coordinates of grid points are created by adding sinusoidal terms to the coordinates of the point above or to the left, for the two axes.

You also get great effects by colouring points based on some function of x, y.

nomainwin dim dxy$( 50, 50) for x =0 to 50: dxy$( x, 0) =str$( x *20); ",0": next x for y =0 to 50: dxy$( 0, y) ="0,"; str$( y *20): next y for x =1 to 50 for y =1 to 50 dx =25 +2 *sin( y /3) dy =25 +2 *sin( x /3 ) newx =val( word$( dxy$( x -1, y), 1, ",")) +dx newy =val( word$( dxy$( x, y -1), 2, ",")) +dy dxy$( x, y) =str$( newx); ","; str$( newy) next y print next x WindowWidth =1100 WindowHeight =1080 UpperLeftX = 20 UpperLeftY = 20 open "Patterns" for graphics_nsb_nf as #w #w "trapclose [quit]" #w "down ; size 1 ; fill black ; color white" for x =1 to 49 for y =1 to 49 xs =val( word$( dxy$( x, y), 1, ",")) ys =val( word$( dxy$( x, y), 2, ",")) #w "size 1 ; color yellow" #w "place "; xs; " "; ys xs2 =val( word$( dxy$( x+1, y), 1, ",")) ys2 =val( word$( dxy$( x+1, y), 2, ",")) #w "goto "; xs2; " "; ys2 xs3 =val( word$( dxy$( x, y+1), 1, ",")) ys3 =val( word$( dxy$( x, y+1), 2, ",")) #w "place "; xs; " "; ys #w "goto "; xs3; " "; ys3 #w "size 10 ; color "; x *y /10; " 0 "; 255 -x *y /10 #w "place "; xs; " "; ys #w "set "; xs; " "; ys next y print next x #w "getbmp screen 0 0 1100 1050" bmpsave "screen", "R:\screen.bmp" unloadbmp "screen" wait [quit] close #w end

A second version moves each data point from its rectangular positionm while the first one increments each position sinusoidally from the previous one.

nomainwin dim dxy$( 50, 50) for x =0 to 50 for y =0 to 50 dx =40 *cos( y /3) dy =10 *sin( x /1.5 ) newx =x *20 +dx newy =y *20 +dy dxy$( x, y) =str$( newx); ","; str$( newy) next y print next x WindowWidth =1100 WindowHeight =1080 UpperLeftX = 20 UpperLeftY = 20 open "Patterns" for graphics_nsb_nf as #w #w "trapclose [quit]" #w "down ; size 1 ; fill black ; color white" for x =1 to 49 for y =1 to 49 xs =val( word$( dxy$( x, y), 1, ",")) ys =val( word$( dxy$( x, y), 2, ",")) #w "size 1 ; color yellow" #w "place "; xs; " "; ys xs2 =val( word$( dxy$( x+1, y), 1, ",")) ys2 =val( word$( dxy$( x+1, y), 2, ",")) #w "goto "; xs2; " "; ys2 xs3 =val( word$( dxy$( x, y+1), 1, ",")) ys3 =val( word$( dxy$( x, y+1), 2, ",")) #w "place "; xs; " "; ys #w "goto "; xs3; " "; ys3 #w "size 12 ; color "; x *y /10; " 0 "; 255 -x *y /10 #w "place "; xs; " "; ys #w "set "; xs; " "; ys next y print next x #w "flush" #w "getbmp screen 0 0 1100 1050" filedialog "Save image as", "*.bmp", fn$ bmpsave "screen", fn$ unloadbmp "screen" wait [quit] close #w end

As always, you need LB or RB installed. e-mail me on mr dot john dot f at gmail dot com if you have problems, comments or improvements.