【发布时间】:2018-05-29 22:09:37
【问题描述】:
使用 Highcharts,我试图将矩形元素定位在饼图切片的“质心”上方。
我有找到切片中心的公式/算法:
shapeArgs = Chart.series[0].points[sliceIndex].shapeArgs,
ang = (shapeArgs.end - shapeArgs.start) / 2 + shapeArgs.start,
posX = cX + shapeArgs.r/2 * Math.cos(ang),
posY = cY + shapeArgs.r/2 * Math.sin(ang)
这会根据开始和结束角度以及图表的半径找到切片的中心 - 由下图中的黑色圆圈表示。我想要的是某种方法来找到适合切片的最大矩形的中心 - 由下面的绿色圆圈表示(我只是盯着它)。我的理由是,定位在切片质心上方的元素比定位在精确中心的元素更适合切片。 [![在此处输入图片描述][1]][1]
我的基本解决方法是减少半径减小的因素:
posX = cX + shapeArgs.r/1.3 * Math.cos(ang)
这似乎工作得很好,但我想知道是否有更好的方法。有人知道这个的数学原理吗?
编辑:
调整因子的结果截图:https://i.stack.imgur.com/FBH5p.png
做维基百科数学的结果截图:
https://i.stack.imgur.com/DlGcS.png
【问题讨论】:
-
一般情况下看起来是一个相当复杂的问题。也许您可以将切片减少为解决方案似乎更简单的三角形(找到三角形内接的矩形)。此外,蛮力解决方案(检查沿切片的所有点的矩形并找到最佳拟合)可能足够快。
标签: javascript math highcharts pie-chart