Как нарисовать текст в середине дуги?(для круговой диаграммы) - PullRequest
0 голосов
/ 28 февраля 2019

Я рисую круговую диаграмму, используя серию вызовов для drawArc примерно так:

g.fillArc(x, y, w, h, startAngle, arcAngle);

Что я не могу понять, так это как отобразить текст в середине дуги,для того, чтобы отобразить%.Есть ли какое-то уравнение, которое я могу использовать, чтобы получить центральную точку любой дуги, которую я рисую?

1 Ответ

0 голосов
/ 01 марта 2019

Центральная точка дуги равна

cx = x + w/2
cy = y + h/2

Средний угол дуги равен

Fi = startAngle + arcAngle/2 

Радиус под углом Fi равен (добавлено 0,5 из-за использования ш /h вместо a / b)

r = 0.5 * w * h / Sqrt((h*Cos(Fi))^2 + (w*Sin(Fi))^2)

Средняя точка дуги равна

mx  = cx + r * Cos(Fi)
my  = cy + r * Sin(Fi)

Пример для

x = 100 y=100 w=400 h=200
start = 0 sweep = 90 degrees = Pi/2
cx = 300  cy = 200
fi  = pi/4
r = 200 * 100 / Sqrt((200^2 * 1/2 + 100^2 * 1/2)) = 
     20000 / Sqrt(20000 + 5000) = 
     20000 / 158 = 126
mx = 300 + 126 * 0.707 = 389
my = 200 + 253 * 0.707 = 289
...