As Wikipedia puts it....
-
It is fun to investgate by drawing a 'family' of super-ellipses. Then I added colour filling, saved each frame, and made this animation..
You may prefer to set the boundary to fill TO to the same as the one to fill WITH.
nomainwin WindowWidth = 830 : WindowHeight = 630 UpperLeftX = 10 : UpperLeftY = 10 pi =atn( 1) *4 Cx =400 Cy =300 open "Super Ellipses" For graphics_nsb as #wg hw =hwnd( #wg) calldll #user32, "GetDC", hw as ulong, hdc as ulong #wg "down; trapclose [quit]" #wg "fill 140 140 50" a =390 ' horizontal semi-diameter b =280 ' vertical semi-diameter 'n = exponent r = 30 ' Initial colour values for the fill. g =260 bl = 20 count =0 for n =3 to 0.1 step -0.1 #wg "down" r =r +7 'int( 40 +215 *rnd( 1)) ' to create a colour gradient. g =g -7 'int( 40 +215 *rnd( 1)) ' randoms f you prefer them.. bl =bl +7 'int( 40 +216 *rnd( 1)) fillCol$ =str$( r) +" " +str$( g) +" " +str$( bl) #wg "color "; fillCol$ #wg "backcolor "; fillCol$ targetcolor =bl *2^16 +g *2^8 +r ' this is colour to fill WITH ' this is also the colour of the outline to fill out TO. #wg "up ; goto "; 400 +a; " 300 ; down" for t =0 to 2 *pi +0.02 step 0.01 ' oscillating term semiaxes switch quadrants term x =abs( cos( t))^( 2 /n) *a *sgn( cos( t)) y =abs( sin( t))^( 2 /n) *b *sgn( sin( t)) xS =400 +int( x) yS =300 +int( y) #wg "goto "; xS; " "; yS scan 'timer 50, [go] ' wait [go] 'timer 0 next t calldll #gdi32, "ExtFloodFill",_ hdc as ulong,_ Cx as long,_ Cy as long,_ targetcolor as long,_ ' ie fill out 'til this colour is met.. _FLOODFILLBORDER as long,_ result as long #wg "getbmp scr 0 0 800 630" 'bmpsave "scr", "images/sc" +right$( "000" +str$( count), 3) +".bmp" count =count +1 next n wait function sgn( w) select case case w <0 sgn =-1 case w =0 sgn = 0 case w >0 sgn = 1 end select end function [quit] calldll #user32, "ReleaseDC", hw as ulong, hdc as ulong, ret as void 'release the DC close #wg end