function param1() return "angle", 0, 100, 50 end function param2() return "num", 4, 32, 6 end function param3() return "color rnd", 0, 100, 40 end function set_petal( w, rad, num ) bs_bezier_begin( 0, 0 ) local x1,y1 = bs_rotate( 0,-1, -3.14159/num ) local x2,y2 = bs_rotate( 0,-1, 3.14159/num ) bs_bezier_c( x1,y1, x2,y2, 0,0 ) bs_bezier_mul( w, w ) bs_bezier_rotate( rad ) end function main( x, y, p ) local z = 1.0 local w = bs_width_max() * z if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w*1.5 then return 0 end end local r,g,b = bs_forebg( 1.0 - math.random()*bs_param3()/100 ) local bira = bs_param2() local j for j = 0,bira-1 do set_petal( w, 3.14159*2/bira * j, bira ) bs_bezier_rotate( (bs_param1() - 50)/50*3.14159 ) bs_bezier_move( x, y ) bs_fill( r,g,b, 255 ) end lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true