我正在编写一个生成多项式函数分形的程序。要打印出结果,我使用给定的循环:
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的对象,方法集将像素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)
计算机屏幕和图像的右上角为(0,0)位置,这是从文本屏幕的时间开始,第一行第一个字符位于左上角位置。
因此使用
double a = xmin + i * width/M;
double b = ymax - j * height/N;
用于屏幕/图片位置(i,j)