用两个点和圆心画弧形

15

我有一个圆的两个点和这个圆的中心点,想在这两个点之间绘制一条弧线。但是使用drawArc方法太简单了,不符合我的要求。有人能帮忙吗?


这是作业吗?如果是,请标记为作业。 - javamonkey79
我知道有许多绘制弧线的函数,但我找不到合适的。 - CarolusPl
2个回答

28

你可以使用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);

祝你好运!


请注意:如果您使用float变量而不是int变量,此代码将运行得更好。 PI=3.14,平方根等等。如果坚持使用int类型,可能会创建很多零。 - user153923
4
理论上可以,但是drawArc()函数需要传入整型参数。 - botismarius
请注意,r = Math.hypot(x1-x0, y1 - 0)。 - vdolez
目前这个 canvas.drawArc() 方法有两个额外的参数,是为 API 21 设计的。如果你需要在 API 21 以下使用,请使用重载版本。 - CoolMind

2

Graphics.drawArc 需要以下参数:

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

根据你的圆弧起点和终点,可以计算出圆弧将被绘制的边界框。这为您提供了足够的信息来提供参数:x、y、width 和 height。

您没有指定所需的角度,因此我猜您可以任意选择一个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接