Благодаря замечанию Бена Уэста, я смог определить ответ. Вы должны повернуть точку вокруг центральной точки круга startAngle
радиан.
Также обратите внимание, если вы используете JavaScript, чтобы круг начинался с pi / 2 и вращался по часовой стрелке вместо против часовой стрелки, как функции sin и cos, поэтому вы должны это учитывать.
Код:
computeCentroid(slice, chart) {
const startAngle = slice.startAngle - (Math.PI / 2), endAngle = slice.endAngle - (Math.PI / 2);
const alpha = endAngle - startAngle;
const radius = chart.radius;
// get coordinates of centroid if startAngle = 0
const xbar = (2 / 3) * (radius / alpha) * Math.sin(alpha);
const ybar = (-2 / 3) * (radius / alpha) * (Math.cos(alpha) - 1);
// rotate coordinates about (0, 0) by startAngle
const xCoord = xbar * Math.cos(startAngle) - ybar * Math.sin(startAngle);
const yCoord = ybar * Math.cos(startAngle) + xbar * Math.sin(startAngle);
return [xCoord, yCoord];
}