当前位置: 首页 > 知识库问答 >
问题:

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

倪风史
2023-03-14

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

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个答案

毋弘光
2023-03-14

从文档中可以看出,drawArc的参数是:

int x, int y, int宽,int高,int启动角,int弧角

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

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

请记住,正如所写的,你有时会画一条弧线

至于文本,您可以使用抽绳,并使用具有一半扫掠角度和所需半径的三角学计算出x和y。不过,为了获得最佳位置,您可能需要弄清楚正在绘制的象限并从中进行调整。

 类似资料:
  • 问题内容: 我正在创建路径,并使用和在每个路径中添加多行。然后绘制所有路径。但是某些路径中的线之间有1-2个像素的间隔。如何删除这些空格?我的代码是这样的: 问题答案: 也许这会创造你想要的 :)

  • 手指任意点击屏幕三点,绘制三角形。 [Code4App.com]

  • 问题内容: 我发现只能填充矩形,而没有圆角,该怎么办? 问题答案: HTML5画布没有提供绘制带有圆角的矩形的方法。 如何使用和方法? 您也可以使用方法代替方法。

  • 问题内容: 因此,我在我的draw方法中使用以下代码在Android地图中绘制了这个三角形: pointX_returned是我从字段中获取的坐标。它们基本上是经度和纬度。结果是一个漂亮的三角形,但内部人员为空,因此我可以看到地图。有办法以某种方式填充它吗? 问题答案: 您可能需要执行以下操作: 并将此颜色用于您的路径,而不是ARGB。确保路径的最后一点在第一个点结束,这也很有意义。 告诉我是否可

  • 问题内容: 在Python中,使用Matplotlib,一个带有空圆的散点图怎么可能是 密谋?我们的目标是在一些彩色磁盘周围画一个空圆圈 已经被“scatter()”绘制,以便突出显示,理想情况下没有 不得不重新画彩色圆圈。 我试过“facecolors=None”,但没用。 问题答案: From the documentation for scatter: Try the following:

  • 我是JavaFx的新手,我想知道如何绘制网格,我想在网格角上绘制点。我应该使用网格窗格作为基础还是线条图?使用网格并在其上绘制的最佳类是什么?