【问题标题】:Trying to calculate angle of a pie chart slice created in svg and javascript尝试计算在 svg 和 javascript 中创建的饼图切片的角度
【发布时间】:2019-08-31 01:45:06
【问题描述】:

我正在通过 javascript 和 svg 创建动态饼图切片。我需要切片的两边都有边框。我无法在两个边界上进行数学运算(我可以在起始边界上得到它,但不能在切片的最终边界上得到它。

let size = 200
let slicePercentage = 33
let radius = size / 2
let circumference = Math.PI * radius * 2
let slice = ((slicePercentage / 2) * circumference) / 100 + ' ' + circumference

let line = ((size / 2) + radius) * Math.cos(slicePercentage)

我在此处包含代码以显示: https://jsfiddle.net/yg210erv/1/

【问题讨论】:

  • 如果您考虑 360degs = 100% 并且您需要知道 33% 的角度:33*360/100 = 118.8degs,但是如果您使用 JavaScript,您可能需要以弧度为单位的角度.所以请记住,360degs = 2*Math.PI

标签: javascript math svg pie-chart


【解决方案1】:

我已经分叉了小提琴来回答您的问题here,但您可能还想检查您想要完成的几何形状。基本上,您将size 作为第二行的y 坐标,这是没有意义的。我为xyline2 坐标设置了两个变量linexliney。表达式很简单:

let finalAngle = 2 * Math.PI * (slicePercentage/100)
let linex = radius + (radius * Math.cos(finalAngle))
let liney = radius + (radius * Math.sin(finalAngle))

你也可以写:

let linex = radius * (1 + Math.cos(finalAngle))

但这只有在您要始终size/2创建具有相同中心的切片时才有效。

【讨论】:

  • 非常感谢,现在我看到了答案,这更有意义。真的很感激。是的,中心位置将始终相同,因此该解决方案适用于所有情况。
  • 很高兴为您提供帮助。如果它有用,您可以接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多