У меня есть две точки окружности и центр этого круга. Я хочу нарисовать дугу между этими точками. Метод drawArc
является простым и не соответствует моей цели.
Кто-нибудь может помочь?
Нарисуйте дугу с 2 точками и центром круга
Ответ 1
Вы можете использовать Canvas.drawArc, но вы должны вычислить необходимые ему аргументы:
Предположим, что центр круга равен (x0, y0) и что дуга содержит ваши две точки (x1, y1) и (x2, y2). Тогда радиус равен: r = sqrt ((x1-x0) (x1-x0) + (y1-y0) (y1-y0)). Итак:
int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
int x = x0-r;
int y = y0-r;
int width = 2*r;
int height = 2*r;
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0));
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0));
canvas.drawArc(x, y, width, height, startAngle, endAngle);
Удачи!
Ответ 2
Graphics.drawArc
ожидает следующие параметры:
- х
- у
- ширина
- Высота
- StartAngle
- arcAngle
Учитывая ваши начальные и конечные точки дуги, можно вычислить ограничивающий прямоугольник, где будет нарисована дуга. Это дает вам достаточно информации для предоставления параметров: x, y, width и height.
Вы не указали нужный угол, поэтому, я думаю, вы могли бы выбрать один произвольно.