开发者

Draw arc with 2 points and center of the circle

开发者 https://www.devze.com 2023-01-25 22:33 出处:网络
I have two points of circle and center of this c开发者_Go百科ircle. I want to draw an arc between these points. Method drawArc is to simple and doesn\'t fit my purpose.

I have two points of circle and center of this c开发者_Go百科ircle. I want to draw an arc between these points. Method drawArc is to simple and doesn't fit my purpose. Anybody help?


You can use Canvas.drawArc, but you must compute the arguments it needs:

Lets say that the center of the circle is (x0, y0) and that the arc contains your two points (x1, y1) and (x2, y2). Then the radius is: r=sqrt((x1-x0)(x1-x0) + (y1-y0)(y1-y0)). So:

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);

Good luck!


Graphics.drawArc expects the following parameters:

  • x
  • y
  • width
  • height
  • startAngle
  • arcAngle

Given your arc start and end points it is possible to compute a bounding box where the arc will be drawn. This gives you enough information to provide parameters: x, y, width and height.

You haven't specified the desired angle so I guess you could choose one arbitrarily.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号