Java画线段,并把角度画出来

 

private double getAngleByPoint(float x1, float y1)
{
    double d = Math.acos(x1/Math.sqrt(x1*x1+y1*y1));
    logger.info(String.format("x: %f, y: %f,d: %f",x1,y1,(float)d));
    return y1>0 ? d : 2*Math.PI-d;
}

public void draw(Graphics g)
{
    logger.info("");
    int x0 =  (int)getPointFirst().getX();
    int y0 =  (int)getPointFirst().getY();
    int x1 =  (int)getPointSecond().getX();
    int y1 =  (int)getPointSecond().getY();
    int radius = 50;

    double angle = getAngleByPoint(x1-x0,y1-y0);
    angle *=(180/Math.PI);
    System.out.println("angle: "+angle);
    if(angle >= 180)
    {
        g.drawArc(x0 - radius / 2, y0 - radius / 2, radius, radius, 0, (int) (360-angle));
        g.drawString(String.format("%d°", (int)(360-angle)),x0-2,y0-2);
    }
    else
    {
        g.drawArc(x0 - radius / 2, y0 - radius / 2, radius, radius, 0, (int)-angle);
        g.drawString(String.format("%d°", (int)angle),x0-2,y0-2);
    }

    g.drawLine(x0,y0,x1,y1);
    g.drawLine(x0,y0,x0+30,y0);
    g.drawString(String.format("(%d,%d)", (int)(getPointFirst().getX()), (int)(getPointFirst().getY())), (int)(getPointFirst().getX()), (int)(getPointFirst().getY())+20);
    g.drawString(String.format("(%d,%d)", (int)(getPointSecond().getX()), (int)(getPointSecond().getY())), (int)(getPointSecond().getX()), (int)(getPointSecond().getY())+20);

    //handleSelected(g);
    ArrayList<Point> points = new ArrayList<>();
    points.add(getPointFirst());
    points.add(getPointSecond());

    drawOutline(g, points);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值