在java中,我有三个点表示两条带角度的线。现在我必须创建与公共点相距约10个像素的角度弧。显示弧上的角度。我可以计算角度,但如何绘制弧和显示弧上角度。请告诉我一些代码视图或链接,我可以在那里找到解决方案。代码片段如下。
public void paintComponent(Graphics g){Graphics2D g2=(Graphics2D)g;点p1=新点(100100);点p2=新点(200100);点p3=新点(100,0);Line2D line1=新建Line2D.DDouble(p1,p2);Line2D line2=新建Line2D.DDouble(p1,p3);g2.绘制(第1行);g2.绘制(第2行);double angle=getAngle(第1行,第2行);System.out.println(角度);//g2.drawArc(110、100、20、20、100、30);}public双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来绘制我想要的精确圆弧,并在上面设置角度。
谢谢&当做
从文档drawArc的参数是:
int x,int y,int width,int height,int startAngle,int arcAngle
x和y是你的公共点(p1),你的宽度和高度可能都是10(画一个半径为10像素的圆弧)
您计算的角度是最后一个参数(arcAngle),用于测量圆弧沿逆时针方向的扫掠。所以你需要计算的最后一部分是起始角,它可能是你的角度1或角度2(在这种情况下,0是正x轴或3点钟位置)。
请记住,正如所写的,你有时会画一条大于180度的弧,如果你想总是找到两条线之间的最小角度,你需要更多的逻辑。
至于文本,你可以使用drawString,用一半的扫描角和你想要的半径,用一些三角法计算出x和y。尽管为了获得最佳位置,您可能需要弄清楚您正在绘制的象限,并从中进行调整。