倒y轴和嵌套for循环

时间:2015-04-03 21:06:48

标签: java algorithm loops

我正在编写一个生成多项式函数分形的程序。要打印出结果,我使用给定的循环:

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

时得到的函数

enter image description here

你可以检查中心点是否较暗(它是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

这个循环有什么问题?

1 个答案:

答案 0 :(得分:0)

计算机屏幕和图像的右上角为(0,0)位置,这是从文本屏幕的时间开始,第一行第一个字符位于左上角位置。

因此使用

        double a = xmin + i * width/M;
        double b = ymax - j * height/N;

用于屏幕/图片位置(i,j)