As shown on the RC Julia set thread, it can be helpful to use colour parameters other than RGB. This is a morning's worth of play--
The only thing to remember is that hue varies 0 to 360, while saturation and value are between 0 and 0.9999. Works nicely with LB graphic commands and with LB Bresenham routine ( see RC) you can draw very easily lines from A to B whose colour varies along their length.
nomainwin global pi, col$: pi =3.14158265 WindowWidth =570 WindowHeight =600 UpperLeftX =int( ( DisplayWidth -WindowWidth) /2) UpperLeftY =int( ( DisplayHeight -WindowHeight) /2) graphicBox #w.g, 9, 9, 537, 537 open "Ring fade demo" for window as #w #w "trapClose quit" #w.g "down; fill darkblue ; goto 267 267" #w.g "size 2" for R =1 to 255 step 0.25 call hsv2rgb R, 0.49, 0.79 ' hue, saturation, value #w.g "color "; col$ #w.g "circle "; R scan next R #w.g "getbmp scr 1 1 537 537" bmpsave "scr", "ring" +str$( time$( "seconds")) +".bmp" wait sub hsv2rgb h, s, v ' hue 0-360, saturation 0-1, value 0-1 c =v *s ' chroma h =h x =c *( 1 -abs( ( ( h /60) mod 2) -1)) m =v -c ' matching adjustment select case case h < 60 r = c: g = x: b = 0 case h <120 r = x: g = c: b = 0 case h <180 r = 0: g = c: b = x case h <240 r = 0: g = x: b = c case h <300 r = x: g = 0: b = c case else r = c: g = 0: b = x end select rd = abs( int( 256 *( r + m))) gn = abs( int( 256 *( g + m))) bu = abs( int( 256 *( b + m))) col$ =right$( " " +str$( rd), 3) +" " +right$( " " +str$( gn), 3) +" " +right$( " " +str$( bu), 3) end sub sub quit handle$ close #w end end sub