Используя 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