Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function setup() {
  2.   createCanvas(512,512);
  3.     background(255);
  4. }
  5. var x0=-1;
  6. var y0=-1;
  7. var x1=-1;
  8. var y1=-1;
  9. function mousePressed() {
  10.     x0=mouseX;
  11.     y0=mouseY;
  12. }
  13. function mouseDragged() {  
  14.     x1=mouseX;
  15.     y1=mouseY;  
  16.     background(255);
  17.     noStroke();
  18.     fill('red');
  19.     ellipse(x0-3,y0-3,6);
  20.     fill('green');  
  21.     ellipse(x1-3,y1-3,6);
  22. }
  23. function mouseReleased() {
  24.   background(255);
  25.   loadPixels();
  26.   draw_line();
  27.   updatePixels();
  28. }
  29. function set_pixel(x,y,c) {
  30.     idx=(y*512+x)*4;
  31.     pixels[idx]=c;
  32.     pixels[idx+1]=c;
  33.     pixels[idx+2]=c;
  34.     pixels[idx+3]=255;
  35. }
  36. function draw_line() {  
  37.   dx=x1-x0;
  38.   dy=y1-y0;
  39.   //console.log("frm "+x0+"|"+y0+" to "+x1+"|"+y1);
  40.   //console.log("init "+dx+" "+dy);
  41.   mx=1;
  42.   if((dx*dx)>(dy*dy)){
  43.     mx=dx;
  44.   }else{
  45.     mx=dy;
  46.   }
  47.   if(mx<0)
  48.     mx=-mx;
  49.   dx=dx/mx;
  50.   dy=dy/mx;
  51.   //console.log("pprs "+dx+"|"+dy+"|"+mx);
  52.   for(i=0;i<mx;i++){
  53.     tmpx=floor(x0+dx*i);tmpy=floor(y0+dy*i);
  54.     set_pixel(tmpx,tmpy,0);
  55.     set(tmpx,tmpy,color(255,0,0));
  56.     //console.log("prs "+tmpx+"|"+tmpy+"|"+i);
  57.   }
  58. }
  59. //na 3
  60. function setup() {
  61.   createCanvas(512,512);
  62.     background(255);
  63. }
  64. var x0=-1;
  65. var y0=-1;
  66. var x1=-1;
  67. var y1=-1;
  68. function mousePressed() {
  69.     x0=mouseX;
  70.     y0=mouseY;
  71. }
  72. function mouseDragged() {  
  73.     x1=mouseX;
  74.     y1=mouseY;  
  75.     background(255);
  76.     noStroke();
  77.     fill('red');
  78.     ellipse(x0-3,y0-3,6);
  79.     fill('green');  
  80.     ellipse(x1-3,y1-3,6);
  81. }
  82. function mouseReleased() {
  83.   background(255);
  84.   loadPixels();
  85.   draw_line();
  86.   updatePixels();
  87. }
  88. function set_pixel(x,y,c) {
  89.     idx=(y*512+x)*4;
  90.     pixels[idx]=c;
  91.     pixels[idx+1]=c;
  92.     pixels[idx+2]=c;
  93.     pixels[idx+3]=255;
  94. }
  95. function draw_line() {  
  96.   if(x0<x1){
  97.     sx0=x0;
  98.     sy0=y0;
  99.     sx1=x1;
  100.     sy1=y1;
  101.   }else{
  102.     sx0=x1;
  103.     sy0=y1;
  104.     sx1=x0;
  105.     sy1=y0;
  106.   }
  107.   a=(sx1-sx0)/(sy1-sy0);
  108.   b=sy0-a*sx0;
  109.   {
  110.     for(y=0;y<512;y++){
  111.       for(x=0;x<512;x++){
  112.         d=((sy1-sy0)/(sx1-sx0))*(x-sx0)-(y-sy0);
  113.         r=0;
  114.         g=0;
  115.         if(255<d)  {g=255;}else
  116.         if(d<-255) {r=255;}else
  117.         if(0<d)    {g=d;  }else
  118.                    {r=-d; }
  119.         set(x,y,color(r,g,0));
  120.       }
  121.     }
  122.   }
  123. }
  124. //----
  125. function setup() {
  126.   createCanvas(512,512);
  127.     background(255);
  128. }
  129. var x0=-1;
  130. var y0=-1;
  131. var x1=-1;
  132. var y1=-1;
  133. function mousePressed() {
  134.     x0=mouseX;
  135.     y0=mouseY;
  136. }
  137. function mouseDragged() {  
  138.     x1=mouseX;
  139.     y1=mouseY;  
  140.     background(255);
  141.     noStroke();
  142.     fill('red');
  143.     ellipse(x0-3,y0-3,6);
  144.     fill('green');  
  145.     ellipse(x1-3,y1-3,6);
  146. }
  147. function mouseReleased() {
  148.   background(255);
  149.   loadPixels();
  150.   draw_line();
  151.   updatePixels();
  152. }
  153. function set_pixel(x,y,c) {
  154.     idx=(y*512+x)*4;
  155.     pixels[idx]=c;
  156.     pixels[idx+1]=c;
  157.     pixels[idx+2]=c;
  158.     pixels[idx+3]=255;
  159. }
  160. function draw_line() {  
  161.   //noprotect
  162.   if(x0<x1){
  163.     sx0=x0;
  164.     sy0=y0;
  165.     sx1=x1;
  166.     sy1=y1;
  167.   }else{
  168.     sx0=x1;
  169.     sy0=y1;
  170.     sx1=x0;
  171.     sy1=y0;
  172.   }
  173.   a=(sx1-sx0)/(sy1-sy0);
  174.   b=sy0-a*sx0;
  175.   {
  176.     for(y=0;y<512;y++){
  177.       for(x=0;x<512;x++){
  178.         d=2*(sy1-sy0)*(x-sx0)-2*(sx1-sx0)*(y-sy0);
  179.         r=0;
  180.         g=0;
  181.         d=floor(d);
  182.         if(d!=0)
  183.           if(0<d)    {g=255;  }else
  184.                      {r=255; }
  185.         set(x,y,color(r,g,0));
  186.       }
  187.     }
  188.   }
  189. }
  190. //na 3.5
  191. function setup() {
  192.   createCanvas(512,512);
  193.     background(255);
  194. }
  195. var x0=-1;
  196. var y0=-1;
  197. var x1=-1;
  198. var y1=-1;
  199. function mousePressed() {
  200.     x0=mouseX;
  201.     y0=mouseY;
  202. }
  203. function mouseDragged() {  
  204.     x1=mouseX;
  205.     y1=mouseY;  
  206.     background(255);
  207.     noStroke();
  208.     fill('red');
  209.     ellipse(x0-3,y0-3,6);
  210.     fill('green');  
  211.     ellipse(x1-3,y1-3,6);
  212. }
  213. function mouseReleased() {
  214.   background(255);
  215.   loadPixels();
  216.   draw_line();
  217.   updatePixels();
  218. }
  219. function set_pixel(x,y,c) {
  220.     idx=(y*512+x)*4;
  221.     pixels[idx]=c;
  222.     pixels[idx+1]=c;
  223.     pixels[idx+2]=c;
  224.     pixels[idx+3]=255;
  225. }
  226. function draw_line() {  
  227.   //noprotect
  228.   if(x0<x1){
  229.     sx0=x0;
  230.     sy0=y0;
  231.     sx1=x1;
  232.     sy1=y1;
  233.   }else{
  234.     sx0=x1;
  235.     sy0=y1;
  236.     sx1=x0;
  237.     sy1=y0;
  238.   }
  239.   {
  240.       y=sy0;
  241.       chg=1/2;
  242.       if(sy0>sy1)chg=-chg;
  243.       for(x=sx0;x<sx1;x++){
  244.         dx=(sx1-sx0)
  245.         dy=(sy1-sy0);
  246.         // Dp=2*dy-dx;
  247.         // Deq=2*dy;
  248.         // Dinc=2*dy-2*dx;
  249.         D=floor(2*dy*(x-x0)-2*dx*(y+chg-y0));
  250.         if(0<chg){
  251.           if(0<D)
  252.             y=y+1;
  253.         }else{
  254.           if(0>D)
  255.             y=y-1;
  256.         }
  257.         set(x,y,color(0));
  258.       }
  259.   }
  260. }
  261. //na 4
  262. function setup() {
  263.     createCanvas(512,512);
  264.     background(255);
  265. }
  266. var last_x=-1;
  267. var last_y=-1;
  268. function mouseDragged() {  
  269.   if(mouseButton != LEFT) return;
  270.   if(last_x>0) {
  271.     line(last_x,last_y,mouseX,mouseY);
  272.   }
  273.   last_x=mouseX;
  274.   last_y=mouseY;
  275. }
  276. function mouseReleased() {
  277.   last_x=last_y=-1;
  278.   if(mouseButton == RIGHT) {
  279.     loadPixels();
  280.     flood_fill(mouseX,mouseY);
  281.     updatePixels();
  282.   }
  283. }
  284. function set_pixel(x,y,c) {
  285.     idx=(y*512+x)*4;
  286.     pixels[idx]=c;
  287.     pixels[idx+1]=c;
  288.     pixels[idx+2]=c;
  289.     pixels[idx+3]=255;
  290. }
  291. function get_pixel(x,y) {
  292.  idx=(y*512+x)*4;
  293.  return pixels[idx];
  294. }
  295. //właściwa funkcja do wypełniania
  296. function flood_fill(X,Y) {
  297.   stack=[];
  298.   stack.push([X,Y]);
  299.   cnt=100;
  300.   //[X,Y]=stack.pop();
  301.   while(stack.length>0&&cnt>0){
  302.     cnt--;
  303.     [x,y]=stack.pop();// zdejmij ze stosu ostatnie współrzędne
  304.     if((0<=x&&x<=512)&&(0<=y&&y<=512)){// sprawdź poprawność współrzędnych
  305.                                       // jeśli współrzędne nie mieszczą się na ekranie, zrób continue
  306.       clr=get_pixel(x,y);
  307.       console.log(x+" "+y+" "+clr);
  308.       if(false){                              // pobierz kolor bieżącego piksela metodą get_pixel
  309.         // jeśli kolor ten nie jest biały (czyli taki, jaki możemy zamalowywać), zrób continue
  310.         // zamaluj bieżący piksel (najlepiej jakimś kolorem innym niż czarny, np. 200)
  311.         // dodaj do stosu sąsiadów bieżącego piksela
  312.         // czyli piksel powyżej (x,y-1), poniżej (x,y+1), z lewej (x-1,y) i z prawej (x+1,y)
  313.       }
  314.     }
  315.   }
  316. }
  317. //na 4.5
  318. function setup() {
  319.     createCanvas(512,512);
  320.     background(255);
  321. }
  322. var last_x=-1;
  323. var last_y=-1;
  324. function mouseDragged() {  
  325.   if(mouseButton != LEFT) return;
  326.   if(last_x>0) {
  327.     line(last_x,last_y,mouseX,mouseY);
  328.   }
  329.   last_x=mouseX;
  330.   last_y=mouseY;
  331. }
  332. function mouseReleased() {
  333.   last_x=last_y=-1;
  334.   if(mouseButton == RIGHT) {
  335.     loadPixels();
  336.     flood_fill(mouseX,mouseY);
  337.     updatePixels();
  338.   }
  339. }
  340. function get_pixel(x,y) {
  341.  idx=(y*1024+x)*4;
  342.  return pixels[idx];
  343. }
  344. //właściwa funkcja do wypełniania
  345. function flood_fill(X,Y) {
  346.   stack=[];
  347.   stack.push([X,Y]);
  348.   cnt=1000000;
  349.   //[X,Y]=stack.pop();
  350.   while(stack.length>0&&cnt>0){
  351.     cnt--;
  352.     [x,y]=stack.pop();// zdejmij ze stosu ostatnie współrzędne
  353.     if((0<=x&&x<=512)&&(0<=y&&y<=512)){// sprawdź poprawność współrzędnych
  354.                                        // jeśli współrzędne nie mieszczą się na ekranie, zrób continue
  355.         clr=get_pixel(x*2,y*2);        // pobierz kolor bieżącego piksela metodą get_pixel
  356.       // if(clr!=255)
  357.       //   clr=get_pixel(x*2+1,y*2);
  358.       // if(clr!=255)
  359.       //   clr=get_pixel(x*2,y*2+1);
  360.       // if(clr!=255)
  361.       //   clr=get_pixel(x*2+1,y*2+1);
  362.      
  363.       //console.log(x+" "+y+" "+clr);  
  364.       if(clr==255){                    // jeśli kolor ten nie jest biały (czyli taki, jaki możemy zamalowywać), zrób continue
  365.         set(x, y, color(128));         // zamaluj bieżący piksel (najlepiej jakimś kolorem innym niż czarny, np. 200)
  366.         stack.push([x-1,y]);           // dodaj do stosu sąsiadów bieżącego piksela
  367.         stack.push([x+1,y]);           // czyli piksel powyżej (x,y-1), poniżej (x,y+1), z lewej (x-1,y) i z prawej (x+1,y)
  368.         stack.push([x,y-1]);
  369.         stack.push([x,y+1]);
  370.         stack.push([x-1,y-1]);
  371.         stack.push([x+1,y-1]);
  372.         stack.push([x-1,y+1]);
  373.         stack.push([x+1,y+1]);
  374.       }
  375.     }
  376.   }
  377. }
  378. //na 5
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement