Quad2D曲线上的Java绘制箭头

时间:2015-10-18 03:43:49

标签: java geometry polygon curve

所以我试图沿Quad2D曲线画一个箭头(任何地方),指定两个不同点之间的曲线。我希望箭头指向最后一点,但无法弄清楚如何做到这一点。我熟悉使用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 个答案:

没有答案
相关问题