2017-04-14 89 views
0

好的,所以我知道右下對角線的左上角很容易反射,您只需通過翻轉座標來轉置數組。現在我有這個任務,希望我能夠在對角線上反射一個圖片對象。這很容易,我找出了大部分,但我得到一個錯誤,說我的座標超出了界限。如何在左下角到右上角反射陣列?

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變量設置爲無效座標。我無法弄清楚哪一個。

回答

0

我想通了,我忘了從reflectPixel對象的座標中減去一個。結果,它被設置爲剛好在圖片邊界外的像素。

+1

現在我不確定是應該刪除還是保留它,因爲我解決了自己的問題,但其他人也可以從中受益。 – Scerzy

相關問題