一連のスーパーフォーミュラ シェイプを示したいと思います。半分は 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"
) に対しては機能します。これが機能しないようにするスーパーフォーミュラ変数に固有のものはありますか?