有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Quad2D曲线上的几何图形Java绘图箭头

因此,我试图沿着一条四边形2D曲线绘制一个箭头(实际上是在任何地方),该曲线指定两个不同点之间的曲线。我想让箭头指向最后一点,但我想不出怎么做。我熟悉使用Java多边形创建箭头,并尝试使用仿射变换旋转箭头(在尝试使用此问题的答案Calculating angle between two points - java查找角度之后)

我的几何学很弱,任何其他关于绘制曲线的建议都将使箭头的位置更容易确定,我们也将不胜感激

        QuadCurve2D.Double my_arc = new QuadCurve2D.Double(x1, y1, cx, cy, x2, y2);
        QuadCurve2D.Double part1 = new QuadCurve2D.Double();
        QuadCurve2D.Double part2 = new QuadCurve2D.Double();
        my_arc.subdivide(part1, part2);

这是我创建圆弧的方式,细分用于找到圆弧的大致中心点,理想情况下,我希望箭头位于中心(但末端也很好) 编辑:

        double deltaY = ARC1.y2 - ARC.y1;
        double deltaX = ARC1.x2 - ARC.x1;
        double angle = Math.atan2(deltaY, deltaX);

        Line2D l = new Line2D.Double((int)ARC1.x2, (int)ARC1.y2, (int)ARC.x1, (int)ARC.y1);

        int px = (int)ARC1.getX2() - 5;
        int py = (int)ARC1.getY2();         

        Polygon pp = new Polygon(new int[] {px, px+5, px+10},new int[] {py, py+15, py}, 3 );

        AffineTransform tt = new AffineTransform();
        tt.rotate(angle, pp.getBounds2D().getCenterX(), pp.getBounds2D().getCenterY());

        g.draw(tt.createTransformedShape(pp));
        g.setColor(Color.red);
        g.draw(l);
        g.setColor(Color.pink);
        g.draw(pp);

使用上面的代码,我得到了这个结果 Image of results 如果红色三角形是旋转的,我是否遗漏了什么,就像我说的,我的几何体有点偏离了


共 (0) 个答案