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); }
Java画线段,并把角度画出来
最新推荐文章于 2024-01-27 00:44:40 发布