javascript - 在D3中计算弧的长度
解决方案
大概如果我知道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));
}
推荐阅读
- c# - Marshal.PtrToStructure 在指向本机 C++ 堆的指针上是否正常?
- javascript - 来自 d3.js 中 2 个点的区域生成器,例如 polygonHull
- c# - 如何在不指定文件位置的情况下打开应用程序?
- c# - 如何从 download.php 下载图像?链接并将其存储在文件中
- msbuild - ASP.NET Core & SPA - 当客户端位于服务器文件夹之外时,客户端文件未发布
- java - JavaFX 自定义 ListView 单元格
- .net - 从程序集或模块“System.ComponentModel.Primitives.dll”导入类型“ISupportInitialize”的 VB.NET 失败
- math - 如何在给定三点之间距离的 xy axys 元素位置中表示?
- wso2 - 将 API Manager 与 Business Process Server (BPM) 连接时出错
- apache-kafka - 偏移提交在 kafka 0.10.2.2 中失败