KelvinBouma

lil sine wave

Aug 26th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var c = document.getElementById("canvas");
  2. var ctx = c.getContext("2d");
  3. var imageData = ctx.createImageData(1, 1);
  4. ctx.fillStyle = "#000";
  5. ctx.fillRect(0, 0, 1, 1);
  6. var imgData = ctx.getImageData(0, 0, 1, 1);
  7.  
  8. function colorPixel(ax, ay) {
  9.     ctx.putImageData(imgData, ax, ay);
  10. }
  11.  
  12. function bresenham(startX, startY, endX, endY) {
  13.     var x;
  14.     var y;
  15.     var d;
  16.     var count;
  17.     var newX;
  18.     var newY;
  19.     var negative;
  20.     var higrad;
  21.     var nx;
  22.     var ny;
  23.  
  24.     function define() {
  25.         x = endX - startX;
  26.         y = endY - startY;
  27.         d = 2*y-x;
  28.         count = 0;
  29.         newX = startX;
  30.         newY = startY;
  31.     }
  32.  
  33.     define();
  34.  
  35.     if (y < 0) {
  36.         var mem1 = startX;
  37.         var mem2 = startY;
  38.         startX = -endX;
  39.         startY = endY;
  40.         endX = -mem1;
  41.         endY = mem2;
  42.         negative = 1;
  43.         define();
  44.     }
  45.  
  46.     if (y > x) {
  47.         higrad = 1;
  48.         define();
  49.         d = 2*x-y;
  50.     }
  51.  
  52.     while(y != 0 || x != 0) {
  53.         x = endX - newX;
  54.         y = endY - newY;
  55.         count++;
  56.         if (negative == 1 & higrad == 1) {
  57.             nx = -newX;
  58.             ny = newY;
  59.             colorPixel(nx, ny);
  60.         } else if (higrad == 1) {
  61.             nx = newX;
  62.             ny = newY;
  63.             colorPixel(nx, ny);
  64.         } else if (negative == 1) {
  65.             nx = -newX;
  66.             ny = newY;
  67.             colorPixel(nx, ny);
  68.         } else {
  69.             nx = newX;
  70.             ny = newY;
  71.             colorPixel(nx, ny);
  72.         }
  73.         if (higrad == 1) {
  74.             if (d < 0) {
  75.                 d = d+x;
  76.             } else {
  77.                 d = d+x-y;
  78.                 newX++;
  79.             }
  80.             newY++;
  81.         } else {
  82.             if (d < 0) {
  83.                 d = d+y;
  84.             } else {
  85.                 d = d+y-x;
  86.                 newY++;
  87.             }
  88.             newX++;
  89.         }
  90.     }
  91. }
  92.  
  93. var printX1 = 0;
  94. var printY1 = 0;
  95. var printX2 = 1;
  96. var printY2 = 0;
  97.  
  98. while(printX2 < 3500) {
  99.     printY1 = Math.round(1750 - 500 * (Math.sin(Math.pow(printX1 * 0.003, 2))));
  100.     printX1++;
  101.     printY2 = Math.round(1750 - 500 * (Math.sin(Math.pow(printX2 * 0.003, 2))));
  102.     printX2++;
  103.     bresenham(printX1, printY1, printX2, printY2);
  104. }
Add Comment
Please, Sign In to add comment