@扇(標準タイプ) --track0:サイズ,0,4096,300,1 --track1:線幅,0,4096,100,1 --track2:扇角度,0,360,60,0.01 --track3:色相,-360,360,0,1 --dialog:色/col,col=0xff8080; -----------------------------------set local t0=math.floor(obj.track0) local t1=math.floor(obj.track1) local t2=obj.track2 local t3=math.floor(obj.track3) local sw,sh=obj.screen_w,obj.screen_h ----------------------------------- if(t0>0)then local hh,ss,vv=HSV(col) hh=(hh+t3)%360 col=HSV(hh,ss,vv) if(t1>t0)then t1=t0 end local fgs0,fgs1=t0,t0-t1 local x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,u0,v0,u1,v1,u2,v2,u3,v3,alp local xx0,yy0,xx1,yy1,xx2,yy2,xx3,yy3 local r=math.rad(t2) local cs=math.cos(r) local sn=math.sin(r) if(t2>0)then obj.setoption("drawtarget","tempbuffer",fgs0,fgs0) obj.load("figure","円",col,fgs0) if(t2<=90)then u0,v0=0 ,0 u1,v1=fgs0*0.5 ,0 u2,v2=fgs0*0.5 ,fgs0*0.5 u3,v3=0 ,fgs0*0.5 alp=1 x0,y0,z0=-fgs0*0.5 ,-fgs0*0.5 ,0 x1,y1,z1=0 ,y0 ,0 x2,y2,z2=x1 ,0 ,0 x3,y3,z3=x0 ,y2 ,0 elseif(t2<=270)then u0,v0=0 ,0 u1,v1=fgs0*0.5 ,0 u2,v2=fgs0*0.5 ,fgs0 u3,v3=0 ,fgs0 alp=1 x0,y0,z0=-fgs0*0.5 ,-fgs0*0.5 ,0 x1,y1,z1=0 ,y0 ,0 x2,y2,z2=x1 ,fgs0*0.5 ,0 x3,y3,z3=x0 ,y2 ,0 end if(00)then obj.load("figure","円",col,fgs1) obj.setoption("blend","alpha_sub") obj.draw() end obj.load("tempbuffer") obj.setoption("blend",0) end end @円グラフ(数値/合計)α --track0:サイズ,0,4096,200,1 --track1:線幅,0,4096,200,1 --track2:精度,5,1000,250,0.01 --track3:色相,-360,360,0,1 --check0:数値ソート,0 --dialog:数値,local angle={60,45,30,20,10,5,5,5,5};色ズレ/chk,chk1=0;彩度,local s0=75;明度,local v0=100; -----------------------------------set local t0=math.floor(obj.track0) local t1=math.floor(obj.track1) local jk=obj.track2*0.001 local t3=math.floor(obj.track3) local sw,sh=obj.screen_w,obj.screen_h if(jk < 0.0025)then jk=1 end local fs=sh/24 obj.setfont("",fs) ----------------------------------- local sum=0 for i=1,#angle do sum=sum+angle[i] end if(obj.check0)then table.sort(angle) end ----------------------------------- local shuf={} for i=1,#angle do shuf[i]=i end sd=100+obj.layer+t3 for i=1,#angle do swp=0 rnd=obj.rand(1,#angle,-sd,i) swp=shuf[i] shuf[i]=shuf[rnd] shuf[rnd]=swp end ----------------------------------- local fgs0,fgs1=t0,t1 obj.load("figure","円",0x222222,fgs0,fgs1) local ow,oh=obj.getpixel() local cx,cy=math.floor(ow*0.5 +0.5),math.floor(oh*0.5+0.5) ----------------------------------- local pixel_p={} for j=1,oh do pixel_p[j]={} for i=1,ow do pixel_p[j][i]=0 end end ----------------------------------- local dst=math.floor(fgs0*0.5+0.5) local ang0=0 local clen=#angle if(clen==0 or clen==null)then clen=1 end for k=1,#angle do ang1=360*ang0/sum ang2=360*(angle[k]+ang0)/sum for j=ang1,ang2,jk do r=math.rad(j-90) cs=math.cos(r) sn=math.sin(r) for i=0,dst do x=math.floor(cs*i +0.5)+cx y=math.floor(sn*i +0.5)+cy col,a=obj.getpixel(x,y,"col") if(a>0 and pixel_p[y+1][x+1]==0)then if(obj.check0)then if(chk1==0)then col=HSV(360*(#angle-k)/clen+t3,s0,v0) else col=HSV(360*(#angle-shuf[k])/clen+t3,s0,v0) end else if(chk1==0)then col=HSV(360*(k-1)/clen+t3,s0,v0) else col=HSV(360*(shuf[k]-1)/clen+t3,s0,v0) end end obj.putpixel(x,y,col,a) pixel_p[y+1][x+1]=1 end end end ang0=ang0+angle[k] end if(obj.check0)then obj.effect("反転","左右反転",1) end obj.effect() obj.draw() @扇(目盛りタイプ) --track0:サイズ,0,4096,200,1 --track1:線幅,0,4096,24,1 --track2:基本角度,0,90,15,0.01 --track3:扇長さ,0,360,270,1 --check0:色変化,0 --dialog:描画密度,local ik=2;色/col,col=0xff8080;色相増加量,local h0=15; -----------------------------------set local t0=math.floor(obj.track0) local t1=math.floor(obj.track1) local t2=obj.track2 local t3=math.floor(obj.track3) local sw,sh=obj.screen_w,obj.screen_h ----------------------------------- local hh,ss,vv=HSV(col) if(ik<0)then ik=1 end if(t1>t0)then t1=t0 end local fgs0,fgs1=t0,t0-t1 local x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3,u0,v0,u1,v1,u2,v2,u3,v3,alp local xx0,yy0,xx1,yy1,xx2,yy2,xx3,yy3 local r=math.rad(t2) local cs=math.cos(r) local sn=math.sin(r) obj.setoption("drawtarget","tempbuffer",fgs0,fgs0) if(t2>0)then obj.load("figure","円",col,fgs0) u0,v0=0 ,0 u1,v1=fgs0*0.5 ,0 u2,v2=fgs0*0.5 ,fgs0*0.5 u3,v3=0 ,fgs0*0.5 alp=1 x0,y0,z0=-fgs0*0.5 ,-fgs0*0.5 ,0 x1,y1,z1=0 ,y0 ,0 x2,y2,z2=x1 ,0 ,0 x3,y3,z3=x0 ,y2 ,0 xx0=x0*cs-y0*sn yy0=x0*sn+y0*cs xx1=x1*cs-y1*sn yy1=x1*sn+y1*cs xx2=x2*cs-y2*sn yy2=x2*sn+y2*cs xx3=x3*cs-y3*sn yy3=x3*sn+y3*cs obj.setoption("blend","alpha_add") obj.drawpoly(xx0,yy0,z0,xx1,yy1,z1,xx2,yy2,z2,xx3,yy3,z3,u0,v0,u1,v1,u2,v2,u3,v3,alp) obj.load("figure","四角形",col,fgs0) obj.setoption("blend","alpha_sub") obj.draw(-fgs0*0.5,-fgs0*0.5) obj.load("tempbuffer") obj.setoption("blend","alpha_add") local len=math.floor(t3/t2 +0.5)-1 for i=0,len,ik do r=math.rad(i*t2) cs=math.cos(r) sn=math.sin(r) u0,v0=fgs0*0.5 ,0 u1,v1=fgs0 ,v0 u2,v2=u1 ,fgs0*0.5 u3,v3=u0 ,v2 alp=1 x0,y0,z0=0 ,-fgs0*0.5 ,0 x1,y1,z1=fgs0*0.5 ,y0 ,0 x2,y2,z2=x1 ,0 ,0 x3,y3,z3=x0 ,y2 ,0 xx0=x0*cs-y0*sn yy0=x0*sn+y0*cs xx1=x1*cs-y1*sn yy1=x1*sn+y1*cs xx2=x2*cs-y2*sn yy2=x2*sn+y2*cs xx3=x3*cs-y3*sn yy3=x3*sn+y3*cs if(i~=0)then if(obj.check0)then obj.effect("単色化","color",HSV((hh+h0*i)%360,ss,vv),"輝度を保持する",1) else end obj.drawpoly(xx0,yy0,z0,xx1,yy1,z1,xx2,yy2,z2,xx3,yy3,z3,u0,v0,u1,v1,u2,v2,u3,v3,alp) end end if(fgs1>0)then obj.load("figure","円",col,fgs1) obj.setoption("blend","alpha_sub") obj.draw() end obj.load("tempbuffer") obj.setoption("blend",0) obj.rz=obj.rz-t2*0.5 end --[[http://madeinpc.blog50.fc2.com/]]--