【问题标题】:Draw arc with 2 points and center of the circle用 2 个点和圆心绘制圆弧
【发布时间】:2011-05-10 22:50:28
【问题描述】:

我有两个圆点和这个圆的中心。我想在这些点之间画一条弧线。方法drawArc 很简单,不符合我的目的。 有人帮忙吗?

【问题讨论】:

  • 这是作业吗?如果是这样,请标记它。
  • 我知道有很多绘制Arc的函数,但我找不到合适的

标签: java drawing geometric-arc


【解决方案1】:

Graphics.drawArc 需要以下参数:

  • x
  • 宽度
  • 身高
  • 开始角度
  • 弧度

根据您的弧线起点和终点,可以计算出将在其中绘制弧线的边界框。这为您提供了足够的信息来提供参数:x、y、宽度和高度。

你没有指定想要的角度,所以我猜你可以任意选择一个。

【讨论】:

    【解决方案2】:

    你可以使用 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 类型,您可能会创建很多零。
    • 理论上是的。但是,drawArc() 有 int 参数。
    • 注意 r = Math.hypot(x1-x0, y1 - 0)
    • 目前这个canvas.drawArc()多了2个参数,专为API 21设计。如果需要
    猜你喜欢
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多