gpt4 book ai didi

java - 用Java计算弧角

转载 作者:行者123 更新时间:2023-12-01 15:26:56 25 4
gpt4 key购买 nike

当我右键单击 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 mouseClicked(MouseEvent e) 
{


PointerInfo a = MouseInfo.getPointerInfo();
Point d = a.getLocation();
x1 = (int)d.getX();
y1 = (int)d.getY();
int base=x1-CenterX;
int prep=CenterY-y1;
double tan=prep/base;
double angle=Math.atan( tan);
}

但计算出的角度不正确。有时它会给我除以零的异常。这是我的右键单击事件,它显示了菜单。

  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,则会被零除。

使用Math.atan2 。它将 x/y 坐标转换为角度,并为您处理所有困惑的数学运算。

关于java - 用Java计算弧角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10045921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com