YellowAfterlife

Code of animation http://pikabu.ru/story/zalipatelnost_16848

Nov 9th, 2013
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <style type="text/css">
  2. /* фон: */
  3. body { background: #222 }
  4. /* центрирование в окне: */
  5. canvas {
  6.     margin: -200px 0 0 -200px;
  7.     position: absolute;
  8.     top: 50%;
  9.     left: 50%;
  10. }
  11. </style>
  12. <canvas width="400" height="400" id="canvas"></canvas>
  13. <script type="text/javascript">
  14. var cel = document.getElementById("canvas"), ctx = cel.getContext("2d"),
  15.     pi = Math.PI, dpi = pi * 2, t = 0;
  16. setInterval(function() {
  17.     var i, j;
  18.     t += 0.05;
  19.     // очистка канвы:
  20.     cel.width += 0;
  21.     // свечение:
  22.     ctx.shadowColor = "rgba(255, 255, 255, 0.7)";
  23.     ctx.shadowBlur = 10;
  24.     // настройки линий и цветов:
  25.     ctx.lineCap = ctx.lineJoin = "round";
  26.     ctx.lineWidth = 20;
  27.     ctx.strokeStyle = ctx.fillStyle = "white";
  28.     // трансформации:
  29.     ctx.save();
  30.     ctx.translate(200, 200);
  31.     // центр фигуры (круг):
  32.     ctx.beginPath();
  33.     ctx.arc(0, 0, 10, 0, dpi);
  34.     ctx.closePath();
  35.     ctx.fill();
  36.     // ярусы:
  37.     for (j = 0; j < 4; j++) {
  38.         var cRad = (225 + j * 225) / dpi, // радиус (пкс.)
  39.             cLen = cRad * dpi, // длина окружности (пкс.)
  40.             cStep = dpi / Math.round(cLen / 75), // шаг (рад.)
  41.             cOfs = cStep * 0.4; // длина дуги (рад.)
  42.         // дуги:
  43.         for (i = 0; i < dpi - 0.01; i += cStep) { // -0.01 т.к. потеря точности
  44.             k = (t * 200 / cLen + i) % dpi; // смещение (рад.)
  45.             if (j % 2) k = -k; // на нечетных ярусах движение в другую сторону
  46.             // собственно рисование дуги:
  47.             ctx.beginPath();
  48.             ctx.arc(0, 0, cRad, k, k + cOfs);
  49.             ctx.stroke();
  50.         }
  51.     }
  52.     // восстановление на начальные настройки:
  53.     ctx.restore();
  54. }, 50);
  55. </script>
Add Comment
Please, Sign In to add comment