【问题标题】:Inverted y axis and nasted foor loop倒置 y 轴并嵌套 for 循环
【发布时间】: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 &lt;= i &lt; My : 0 &lt;= j &lt; N 图片来源取决于 Picture 类。如果您使用Some picture class 之类的东西,您可以通过调用一个函数来更改它。 编辑好的,所以你也可以解决它然后没关系;)

标签: java algorithm loops


【解决方案1】:

电脑屏幕和图像的右上角为(0,0)位置,这是从文本屏幕时代开始的,第一行第一个字符在左上角。

这样用

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多