如何使用d3旋转?

我正在为数学课程设置D3演示,并希望三角形围绕其顶点之一旋转。当D3执行旋转指令时,三角形在正确的端点处结束,但是在旋转动画期间会飞入和飞出视线。


我知道我必须调整图像,以便可以看到整个旋转,但是我不明白为什么三角形会“飞走”,而不是像我期望的那样围绕顶点旋转。我希望三角形围绕矩形顶部水平线的中点旋转。


FWIW的想法是最终将矩形转换为梯形。


实现枢轴的正确旋转语法是什么?


这是整个页面:


<!DOCTYPE html>

<head>

  <meta charset="utf-8">

  <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>

  <style>

    body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }

    svg { width:100%; height: 400px }

  </style>

</head>


<body>

  <script>


    var svg = d3.select("body").append("svg");


    var data = [  

      {'x': 40, 'y': 40}, 

      {'x': 40, 'y': 100},

      {'x': 200, 'y': 100},  

      {'x': 200, 'y': 40},  

      {'x': 40, 'y': 40},


    ];


    var line = d3.svg.line()

                 .x(function(d) { return  (d['x']); })

                 .y(function(d) { return  (d['y']); });


    var path = svg.append('path').attr('d', line(data))

    .style("stroke","steelblue")

    .style("stroke-width","1px")

    .style("fill","none")


    var tdata = [  

      {'x': 120, 'y': 40}, 

      {'x': 200, 'y': 70}, 

      {'x': 200, 'y': 40}, 

      {'x': 120, 'y': 40},


      ]; 


      tpath = svg.append('path').attr('d', line(tdata))

      .style("stroke", "red")

      .style("stroke-width","1px")

      .style("fill","none")

      .transition().delay(2000)     

       .duration(1000)

       .attr("transform", "rotate(-180,120,40)");


  </script>

</body>


繁花不似锦
浏览 129回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript