gpt4 book ai didi

java - 分离饼图的各个部分

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:04 25 4
gpt4 key购买 nike

我有代码来绘制相等部分的饼图。但我不希望每片馅饼都相互连接,而是希望每片之间有一个距离(空间)。我该怎么做?

import javax.swing.JApplet;
import java.awt.*;

public class PieChart extends JApplet {
public void paint(Graphics page) {
setBackground(Color.lightGray);

page.setColor(Color.blue);
page.fillArc(70, 25, 100, 100, 0, 45);

page.setColor(Color.yellow);
page.fillArc(70, 25, 100, 100, 45, 45);

page.setColor(Color.black);
page.fillArc(70, 25, 100, 100, 90, 45);

page.setColor(Color.green);
page.fillArc(70, 25, 100, 100, 135, 45);

page.setColor(Color.red);
page.fillArc(70, 25, 100, 100, 180, 45);

page.setColor(Color.magenta);
page.fillArc(70, 25, 100, 100, 225, 45);

page.setColor(Color.cyan);
page.fillArc(70, 25, 100, 100, 270, 45);

page.setColor(Color.orange);
page.fillArc(70, 25, 100, 100, 315, 45);
}
}

最佳答案

正如 hagello 建议的那样,您可能希望通过将碎片从中心移出来“爆炸”馅饼。为此,您需要计算每个楔形(中心)的方向。然后将楔子的原点朝这个方向移动一段距离。以下是重新映射的 x 和 y 坐标的可能计算:

public class pie {
public static void main(String[] args) {
int x;
int y;
int d = 5; /* our distance of "explosion" */

// thing.fillArc(70, 25, 100, 100, 0, 45); /* we had (70,25) */
x = offsetX(70, d, 0, 45);
y = offsetY(25, d, 0, 45);
// thing.fillArc(x, y, 100, 100, 0, 45); /* with new x & y */
System.out.println("x = " + x + ", y = " + y); /* showing */
}

public static int offsetX ( int x, int d, int sa, int aa ) {
double ca = Math.toRadians((sa + aa) / 2.0);

return x + (int)(Math.cos(ca) * d);
}

public static int offsetY ( int y, int d, int sa, int aa ) {
double ca = Math.toRadians((sa + aa) / 2.0);

return y + (int)(Math.sin(ca) * d);
}
}

关于java - 分离饼图的各个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306363/

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