答案 0 :(得分:1)
如果我知道一个圆弧的innerRadius
(对于A和B的长度相同),我可以绘制一个虚构的三角形并使用余弦定律
c2 = a2 + b2-2ab cos C
但是我需要角度C
。通过获取起始角度和终止角度的差异,可以在D3中进行检索。
var x = d3.scaleLinear()
.range([0, 2 * Math.PI])
.clamp(true);
var y = d3.scaleLinear()
.range([0, this.radius])
.clamp(true);
var.arc = d3.arc()
.startAngle(function(d) {
return x(d.x0);
})
.endAngle(function(d) {
return x(d.x1);
});
function getRingRadius() {
// for example
return 50;
}
function measureSegment(d) {
var a = getRingRadius() * (d.depth || 0), b = a;
var C = arc.startAngle()(d) - arc.endAngle()(d);
return Math.sqrt((a*a + b*b) - 2*a*b*Math.cos(C));
}