【问题标题】:How to reflect an array over a bottom-left to top-right diagonal?如何在左下角到右上角的对角线上反映数组?
【发布时间】:2017-04-14 03:02:31
【问题描述】:

好的,所以我知道从左上角到右下角的对角线很容易反映过来,您只需通过翻转坐标来转置数组。现在我有这个任务,希望我在对角线上反射一个图片对象。这很容易,我想通了大部分,但我收到一个错误,说我的坐标超出了范围。

for (int i=0; i<v.getWidth(); i++)
    {
        for (int j = 0; j < v.getHeight() - i; j++)
        {
            Pixel pixel = v.getPixel(i, j);
            Pixel reflectPixel = v.getPixel(v.getWidth() - j,v.getHeight() - i);
            int amountRed = pixel.getRed();
            int amountBlue = pixel.getBlue();
            int amountGreen = pixel.getGreen();
            reflectPixel.setBlue(amountBlue);
            reflectPixel.setRed(amountRed);
            reflectPixel.setGreen(amountGreen);
        }
    }

现在我很确定我有我应该镜像的正确坐标,这是问题所在的循环之一。

我在想的是第一个循环水平运行在数组中,第二个循环垂直运行(与通常的数组相反)。如果我让循环的垂直部分停止在越来越高的点,我就会有我必须反映的线。我通过从中减去变量 i 来做到这一点。

代码甚至无法编译,因为循环需要图片区域之外的像素,或者 reflectPixel 变量设置为无效坐标。我不知道是哪个。

【问题讨论】:

    标签: java


    【解决方案1】:

    我想通了,我忘了从 reflectPixel 对象的坐标中减去一个。结果,它被设置为刚好在图片边框之外的像素。

    【讨论】:

    • 现在我不确定是否应该删除或保留它,因为我解决了自己的问题,但其他人也可以从中受益。
    猜你喜欢
    • 2021-02-21
    • 2021-12-21
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多