Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中圆弧角的计算_Java_Graphics_Awt_Angle - Fatal编程技术网

Java中圆弧角的计算

Java中圆弧角的计算,java,graphics,awt,angle,Java,Graphics,Awt,Angle,当我在Jframe上单击鼠标右键时,将显示此饼图。我想要的是计算单击事件发生时每个饼图的角度 Color[] c = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.MAGENTA, Color.PINK}; for(int i=0; i<8; ++i){ g.setColor(c[i]);

当我在Jframe上单击鼠标右键时,将显示此饼图。我想要的是计算单击事件发生时每个饼图的角度

 Color[] c = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW, 
                     Color.GREEN, Color.CYAN, Color.MAGENTA, Color.PINK};
        for(int i=0; i<8; ++i){
            g.setColor(c[i]);
            g.fillArc(x, y, w, h, i*45, 45);
        }
但是计算的角度是不正确的。它有时给我零除的例外。 这是我的右击事件,显示菜单

  public void mousePressed(MouseEvent e) {
            if(e.isPopupTrigger())
            {
                CenterX=e.getX();
                CenterY=e.getY();
              try {
                    Thread.sleep(300L);
                } catch (InterruptedException ex) {
                    Logger.getLogger(animate.class.getName()).log(Level.SEVERE, null, ex);
                }
        p.repaint();
            }
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            if(e.isPopupTrigger()){
               s=e.getX();
                as=e.getY();
                p.mx=e.getX(); 
        p.my=e.getY();

是的,如果
base==0
,即如果
x1==CenterX
,将发生被零除的情况


使用。它可以将x/y坐标转换为角度,并为您解决所有繁琐的数学问题。

若要更快获得更好的帮助,请发布一篇文章。提供鼠标相对于整个屏幕而不是组件的位置。
  public void mousePressed(MouseEvent e) {
            if(e.isPopupTrigger())
            {
                CenterX=e.getX();
                CenterY=e.getY();
              try {
                    Thread.sleep(300L);
                } catch (InterruptedException ex) {
                    Logger.getLogger(animate.class.getName()).log(Level.SEVERE, null, ex);
                }
        p.repaint();
            }
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            if(e.isPopupTrigger()){
               s=e.getX();
                as=e.getY();
                p.mx=e.getX(); 
        p.my=e.getY();