0

在java中,我有三个点表示两条线,形成一个角度。现在我必须创建距离公共点约 10 像素的角弧。在圆弧上显示角度。我能够计算角度,但如何绘制弧线并在弧线上显示角度。请告诉我一些代码视图或链接,我可以在其中找到解决方案。代码片段如下。

公共无效paintComponent(图形g){
        图形2D g2=(图形2D)g;

        点 p1=新点(100,100);
        点 p2=新点(200,100);
        点 p3=新点(100,0);

        Line2D line1=新 Line2D.Double(p1, p2);
        Line2D line2=new Line2D.Double(p1, p3);
        g2.draw(line1);
        g2.draw(line2);
        双角=getAngle(line1,line2);
        System.out.println(角度);
        //g2.drawArc(110, 100, 20, 20, 100, 30);

    }

    public double getAngle(Line2D line1,Line2D line2){

        双角1=Math.atan2(line1.getY1()-line1.getY2(), line1.getX1()-line1.getX2());
        双角2=Math.atan2(line2.getY1()-line2.getY2(), line2.getX1()-line2.getX2());

        返回 Math.toDegrees(angle1-angle2);
    }

我不知道如何使用 DrawArc 来绘制我想要的精确弧线并在其上放置角度。

感谢和问候。

4

1 回答 1

-1

从文档中drawArc的论点是:

int x, int y, int width, int height, int startAngle, int arcAngle

x 和 y 是您的共同点(p1),您的宽度和高度可能都是 10(绘制半径为 10 像素的圆弧)

您计算的角度是最后一个参数 (arcAngle),它测量弧在逆时针方向的扫描。因此,您需要计算的最后一部分是起始角度,可能是您的角度 1 或角度 2(在这种情况下,0 是正 x 轴或 3 点钟位置)。

请记住,正如所写,您有时会绘制 > 180 度的弧,如果您想始终找到两条线之间的最小角度,则需要更多逻辑。

至于文本,您可以使用 drawString 并使用一些三角函数计算 x 和 y,其中一半的扫描角和所需的半径。尽管为了获得最佳位置,您可能需要弄清楚您正在绘制哪个象限并从那里进行调整。

于 2012-10-08T17:42:39.440 回答