如何在java中绘制三点角度的弧

时间:2012-10-07 07:39:03

标签: java graphics shape shapes

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

public void paintComponent(Graphics g){
        Graphics2D g2=(Graphics2D)g;

        Point p1=new Point(100,100);
        Point p2=new Point(200,100);
        Point p3=new Point(100,0);

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

    }

    public double getAngle(Line2D line1,Line2D line2){

        double angle1=Math.atan2(line1.getY1()-line1.getY2(), line1.getX1()-line1.getX2());
        double angle2=Math.atan2(line2.getY1()-line2.getY2(), line2.getX1()-line2.getX2());

        return Math.toDegrees(angle1-angle2);
    }

我不知道如何使用DrawArc绘制我想要的精确弧线,也可以将角度放在上面。

谢谢&问候。

1 个答案:

答案 0 :(得分:-1)

从文档中drawArc的参数是:

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

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

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

请记住,正如所写,你有时会画一个>的弧线。 180度,如果你想总是找到两条线之间的最小角度,你需要更多的逻辑。

对于文本,您可以使用drawString,并使用一些三角函数计算出x和y,扫描角度和所需半径的一半。虽然为了获得最佳位置,您可能需要确定要绘制的象限并从那里进行调整。