【发布时间】:2015-04-03 21:06:47
【问题描述】:
我正在编写一个生成多项式函数的分形的程序。为了打印出结果,我使用了给定的循环:
double xmin = xcenter - sizex/2;
double ymin = ycenter - sizey/2;
double width = sizex;
double height = sizey;
for(int i=0; i < M; i++){
for(int j=0; j < N; j++){
double a = xmin + i * width/M;
double b = ymin + j * height/N;
Complex z = new Complex(a, b);
// Call of the method that return me a color c
pic.set(i, j, c);
}
}
pic 对象是 Picture 类的对象,set 方法将像素 i、j 的颜色设置为 c(这个类的一切都是正确的)。
我希望右上角有坐标 (xcenter + sizex/2 , ycenter + sizey/2)
将此函数调用为根为 0,0 和 3,3 的复杂函数,这是我在 xcenter=ycenter=0 和 sizex = sizey = 6 时得到的结果
您可以检查中心点是否较暗(它是 0,0),另一个较暗的点应该在右上角(应该是 3,3),但它在 (3, -3) 上。调用这个方法到根(-3,-3),可以检查y轴也反转了。
这是我的函数计算的最后一个点,它收敛的根在它下面(如您所见,该方法是正确的)
2.991428571428571 + 2.9485714285714284i:
3.0 + 3.0i
2.991428571428571 + 2.9571428571428573i:5
3.0 + 3.0i
2.991428571428571 + 2.9657142857142853i:4
3.0 + 3.0i
2.991428571428571 + 2.974285714285714i:4
3.0 + 3.0i
2.991428571428571 + 2.982857142857143i:4
3.0 + 3.0i
2.991428571428571 + 2.991428571428571i:4
这个循环有什么问题?
【问题讨论】:
-
你用的是哪个图片类?也许 (0|0) 在左上角。
-
不,它在中心(方法收敛显示在上图中)。显然,我正在用我想在右上角绘制的颜色绘制 (M,N) 角(图像的尺寸为 MxN)。
-
在循环结束时,我正在绘制 (i, j) = (M-1, N-1) 但使用我想要绘制的颜色 (0, N-1)
-
已解决。刚刚更改了 pic.set(i, N-1-j, c)。
-
我的意思是你通过循环和
pic.set(i, j, c);所以你设置图片的像素。x : 0 <= i < M和y : 0 <= j < N图片来源取决于Picture类。如果您使用Some picture class 之类的东西,您可以通过调用一个函数来更改它。 编辑好的,所以你也可以解决它然后没关系;)