|
6559 | 6559 | function pie(data) { |
6560 | 6560 | var n = data.length, values = data.map(function(d, i) { |
6561 | 6561 | return +value.call(pie, d, i); |
6562 | | - }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, p = +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle), pa = p * (da < 0 ? -1 : 1), np = Math.abs(da) >= τε && n > 1 ? n : n - 1, k = (da - np * pa) / d3.sum(values), index = d3.range(n), arcs = [], v; |
| 6562 | + }), a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a, np = Math.abs(da) >= τε && n > 1 ? n : n - 1, p = Math.min(da / np, +(typeof padAngle === "function" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), k = (da - np * pa) / d3.sum(values), index = d3.range(n), arcs = [], v; |
6563 | 6563 | if (da > 0 ^ k > 0) k = 0, p = da / np; |
6564 | 6564 | if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { |
6565 | 6565 | return values[j] - values[i]; |
|
7912 | 7912 | y0 = r1 * Math.sin(a0 + p1); |
7913 | 7913 | x1 = r1 * Math.cos(a1 - p1); |
7914 | 7914 | y1 = r1 * Math.sin(a1 - p1); |
7915 | | - var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1; |
| 7915 | + var d1 = Math.abs(a1 - a0 - 2 * p1), l1 = d1 <= π ? 0 : 1; |
7916 | 7916 | if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) { |
7917 | 7917 | var h1 = (a0 + a1) / 2; |
7918 | 7918 | x0 = r1 * Math.cos(h1); |
|
7925 | 7925 | y2 = r0 * Math.sin(a1 - p0); |
7926 | 7926 | x3 = r0 * Math.cos(a0 + p0); |
7927 | 7927 | y3 = r0 * Math.sin(a0 + p0); |
7928 | | - var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1; |
| 7928 | + var d0 = Math.abs(a0 - a1 + 2 * p0), l0 = d0 <= π ? 0 : 1; |
7929 | 7929 | if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) { |
7930 | 7930 | var h0 = (a0 + a1) / 2; |
7931 | 7931 | x2 = r0 * Math.cos(h0); |
|
7934 | 7934 | } |
7935 | 7935 | } |
7936 | 7936 | var path = []; |
7937 | | - path.push("M" + x0, "," + y0); |
7938 | | - if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1); |
7939 | | - path.push("L" + x2, "," + y2); |
7940 | | - if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3); |
| 7937 | + if (rc) { |
| 7938 | + if (r1) { |
| 7939 | + var rc1 = Math.min(rc, r1 / (1 / Math.sin(d1 / 2) + 1)); |
| 7940 | + } else { |
| 7941 | + path.push("M", x0, ",", y0); |
| 7942 | + } |
| 7943 | + } else { |
| 7944 | + path.push("M", x0, ",", y0); |
| 7945 | + if (x1 != null) path.push("A", r1, ",", r1, " 0 ", l1, ",", cw, " ", x1, ",", y1); |
| 7946 | + path.push("L", x2, ",", y2); |
| 7947 | + if (x3 != null) path.push("A", r0, ",", r0, " 0 ", l0, ",", 1 - cw, " ", x3, ",", y3); |
| 7948 | + } |
7941 | 7949 | path.push("Z"); |
7942 | 7950 | return path.join(""); |
7943 | 7951 | } |
|
0 commit comments