我无法找到我的程序出了什么问题。当我执行它时,它似乎陷入无限循环(或类似的东西),我无法弄清楚我的程序有什么问题。这是我到目前为止所做的:
public class Spiral extends JComponent{
int WIDTH = 0;
int HEIGHT = 0;
public Spiral(int WIDTH, int HEIGHT) {
this.WIDTH = WIDTH;
this.HEIGHT = HEIGHT;
}
public void paintSpiral(Graphics g){
double a = 3;
double b = 0;
double t = 0;
double theta = Math.toRadians(t);
double r = theta * a + b;
double pi = Math.PI/180;
double end = 720 * pi;
int middle_x = WIDTH / 2;
int middle_y = HEIGHT / 2;
for (theta = 0; theta < end; theta += pi) {
double x = Math.cos(theta) * r + middle_x;
double y = Math.sin(theta) * r + middle_y;
int xx = (int) Math.round(x);
int yy = (int) Math.round(y);
g.drawLine(xx, yy, xx + 10, yy + 20);
}
}
public void paintComponent(Graphics g) {
paintSpiral(g);
}
public static void main(String[] args) {
int WINDOW_WIDTH = 1024;
int WINDOW_HEIGHT = 1024;
JFrame frame = new JFrame();
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
// Set the title of the window
frame.setTitle("Archimedean Spiral");
// Make a new Spiral, add it to the window, and make it visible
Spiral d = new Spiral(1024, 1024);
frame.add(d);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我必须使用Graphics,这就是为什么我让Math.round将x值更改为整数所以我可以实际绘制线条。这就是我怀疑的问题,但我似乎无法修复它。有什么建议吗?
答案 0 :(得分:3)
循环变量t
的类型为int
,因此t += pi
实际上是无操作,导致无限循环。
t
应为double
类型。此外,它应该是paintSpiral
的本地而不是该类的成员。我不明白为什么你使用t
(零)来初始化r
。
此外,你的学位和弧度似乎都很困惑。