v9958screen12_yjk.lua 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. xc=4;yc=1;lp2=32;ap2=64;bp2=64 -- lp=32;ap=64;bp=64 -- lp=16;ap=64;bp=64
  2. lp=255/lp2;ap=255/ap2;bp=255/bp2
  3. function INT(a)
  4. return(a-a%1)
  5. end
  6. function SET_YJK(tx0,ty0,tyc0,tjc0,tkc0)
  7. tr0=tyc0+tjc0;tg0=tyc0+tkc0
  8. tb0=(tyc0*1.25)-(tjc0*.5)-(tkc0*.25)
  9. set_rgb(tx0,ty0,tr0,tg0,tb0)
  10. end
  11. function GET_YJK(tx0,ty0)
  12. tr0,tg0,tb0=get_rgb(tx0,ty0)
  13. tyc0=(tb0/2)+(tr0/4)+(tg0/8)
  14. tjc0=tr0-tyc0;tkc0=tg0-tyc0
  15. return tyc0,tjc0,tkc0
  16. end
  17. for y1=0,height-1,yc do
  18. progress(y1/height)
  19. for x1=0,width-1,xc do
  20. as=0;bs=0;sd=0
  21. for y2=0,yc-1,1 do
  22. for x2=0,xc-1,1 do
  23. x=x1+x2;y=y1+y2
  24. lq,aq,bq=GET_YJK(x,y)
  25. lr=lq*255;ar=(127*aq)+128;br=(127*bq)+128
  26. as=as+ar;bs=bs+br;sd=sd+1
  27. end;end
  28. af=as/sd;bf=bs/sd
  29. az=(INT(af/ap))*ap
  30. bz=(INT(bf/bp))*bp
  31. for y2=0,yc-1,1 do
  32. for x2=0,xc-1,1 do
  33. x=x1+x2;y=y1+y2
  34. lq,aq,bq=GET_YJK(x,y)
  35. lr=lq*255;ar=(127*aq)+128;br=(127*bq)+128
  36. lz=(INT(lr/lp))*lp
  37. SET_YJK(x,y,(lz/255)*1.05,(az/127)-1,(bz/127)-1)
  38. end;end;end;end
  39. flush()