我想展示一系列超公式形状,其中一半是一个形状,一半是另一个形状。以下内容非常适合仅显示一种类型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"
)。是否有一些关于超公式变量的特定内容使其无法正常工作?