0

一連のスーパーフォーミュラ シェイプを示したいと思います。半分は 1 つのシェイプで、半分は別のシェイプです。以下は、1 つのタイプを表示するだけで完全に機能しますvar shape

var coords = d3.range(n).map(function(i,d) {
    return [(i+1)*w/(n+1) , h/2];
  });    

var svg = d3.select("body").append("svg:svg")
   .attr("width", w)
   .attr("height", h);

var g = svg.selectAll("g")
   .data(coords)
   .enter().append("svg:g");

var shape = d3.superformula()
   .type("square")
   .size(4000)
   .segments(360);

var shape2 = d3.superformula()
   .type("triangle")
   .size(4000)
   .segments(360);

g.append("path")
   .attr("transform", function(d) { return "translate(" + d + ")"; })  
   .attr("d", shape);

ただし、最後の行を変更して、スーパーフォーミュラの形状を返す関数を作成しようとすると、何も表示されません。

    .attr("d", function(d,i) {if (i < n/2.0){return shape} else {return shape2}});

ただし、この関数は通常のパス変数 (例: "M150 0 L75 200 L225 200 Z") に対しては機能します。これが機能しないようにするスーパーフォーミュラ変数に固有のものはありますか?

4

1 に答える 1