Guest User

Untitled

a guest
Nov 17th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1.  
  2. var start = Date.now()
  3. , n = 6 //number of rings
  4. , radius = 70 //radius interval
  5. , deg = 360 //angle (in degrees) we will split
  6. , width = 21 //width of each box
  7. , t = 1337 //"time'
  8. , a = 1
  9. , ntheta = 2
  10. , speed_factor = 0.02917
  11.  
  12. , opacity = 0.01
  13. , stroke_opacity = 0.9
  14. , stroke_width = 2
  15. , fill_color = "#000000"
  16. , stroke_colors = ["#ffffff", "#000000"]
  17. , corners = 0
  18.  
  19.  
  20.  
  21.  
  22. var sw = parseInt(d3.select("svg").style("width"))
  23. //make the sin waves extend past the width a little
  24. sw += .1 * sw
  25. var sh = parseInt(d3.select("svg").style("height"))
  26.  
  27.  
  28. var rings = [ ];
  29.  
  30. for (i in d3.range(n))
  31. {
  32. var speed = i * speed_factor
  33. rings.push({
  34. radius: radius*i,
  35. width: width,
  36. speed: speed,
  37. phase: i
  38. })
  39. }
  40.  
  41. var svg = d3.select("svg")
  42.  
  43. svg.append("rect")
  44. .attr("width", sw)
  45. .attr("height", sh)
  46. .attr("fill", "#888888")
  47.  
  48.  
  49. svg = svg.append("svg:g")
  50. .attr("transform", "translate(" + sw / 2 + "," + sh / 2 + ")scale(.6)");
  51.  
  52. var ring = svg.selectAll("g")
  53. .data(rings)
  54. .enter().append("svg:g")
  55. .attr("class", "ring")
  56. .each(ringEnter);
  57.  
  58.  
  59. var updateRing = function(elapsed) {
  60. rotate = function(d,i) {
  61. return "rotate(" + (a * d.speed * elapsed) + ")";
  62. };
  63.  
  64. var rings = svg.selectAll("g.ring")
  65. .attr("transform", rotate)
  66. .selectAll("rect")
  67. .attr("transform", rotate)
  68. .attr("fill", fill_color)
  69. .attr("fill-opacity", opacity)
  70. .attr("stroke", function(d,i) {
  71. return stroke_colors[i % 2];
  72. })
  73. .attr("stroke-opacity", stroke_opacity)
  74. .attr("stroke-width", stroke_width)
  75. .attr("rx", corners)
  76. .attr("ry", corners)
  77.  
  78.  
  79.  
  80. }
  81. function ringEnter(d, i) {
  82. //split up the circle into squares
  83. var theta = Math.floor(ntheta * Math.PI * d.radius / d.width * Math.SQRT1_2),
  84. k = deg / theta;
  85. d3.select(this).selectAll("g")
  86. .data(d3.range(theta).map(function() { return d; }))
  87. .enter().append("svg:g")
  88. .attr("class", "square")
  89. .attr("transform", function(_, i) { return "rotate(" + i * k + ")translate(" + d.radius + ")"; })
  90. .append("svg:rect")
  91. .attr("x", -d.width / 2)
  92. .attr("y", -d.width / 2)
  93. .attr("width", d.width)
  94. .attr("height", d.width);
  95. }
  96. updateRing(t)
Add Comment
Please, Sign In to add comment