function param1() return "density", 5, 100, 50 end function param2() return "color rnd", 0, 100, 40 end function param3() return "size rnd", 0, 100, 20 end function set_petal( w ) bs_bezier_begin( 0, 0 ) bs_bezier_c( -0.5, -1.5, 0.5, -1.5, 0,0 ) bs_bezier_mul( w, w*0.8 ) bs_bezier_move_center() end function main( x, y, p ) local w = bs_width() if w < 5 then w = 5 end if not firstDraw then local distance = bs_distance( lastDrawX - x, lastDrawY - y ) if distance < w/2 then return 0 end end local num = 40 * bs_param1() / 100 local i for i = 0,num do local dx = x + bs_grand( 0, 0.4 ) * w local dy = y + bs_grand( 0, 0.4 ) * w local rnd = 0.5 + math.random() * bs_param3()/200 set_petal( rnd*w/2 ) bs_bezier_rotate( math.random() * 3.14 * 2 ) bs_bezier_move( dx, dy ) local r,g,b = bs_forebg( 1.0 - math.random()*bs_param2()/100 ) bs_fill( r,g,b, 255 ) end lastDrawX = x lastDrawY = y firstDraw = false return 1 end lastDrawX = 0 lastDrawY = 0 firstDraw = true