javascript - 尝试计算在 svg 和 javascript 中创建的饼图切片的角度
问题描述
我正在通过 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/
解决方案
我在这里分叉了小提琴来回答你的问题,但你可能还想检查你想要完成的几何形状。基本上,您将size
其作为y
第二行的坐标,这没有任何意义。我设置了两个变量,linex
对于liney
和x
的y
坐标line2
。表达式非常简单:
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
。
推荐阅读
- python - 如何将 pandas 列分配给其他列,如果是 nan,如何分配默认值?
- jquery - jQuery - DateTimePicker - 删除当前时间所需的时间
- unity3d - 当我提高速度时,OnCollisionEnter 不起作用
- mysql - spring boot + mysql + docker + travis在travis中构建时获取mysql连接失败
- python - 如何根据 PySpark 中的条件修改行的子集
- azure - 未找到 Blob 存储文件上的 Azure Polybase 外部表
- r - 获取连接中匹配的行数和总行数
- azure - 如何使用我的 DNS 服务器获取 Azure 容器实例?
- powerapps - 如何使用 url 参数进行调试
- angular - fa-icon 在有效的结束标签上抛出错误