2015-04-30 64 views
0

我試圖測試一個點是否在矩形內。我創建了「Rect rect = new Rect(2,2,3,3);」據我所知,這個矩形是從2,2點開始到4,4這意味着它應該 包含9個元素。其實我有9個元素,但我爲什麼不geeting,從2,2開始元素高達4,4rect.contain()在下面的代碼中不顯示正確的結果

我預期的輸出是:

27, 37, 37 
49, 58, 58 
75, 79, 79 

代碼

Rect rect = new Rect(2, 2, 3, 3); 

    for (int i = 0; i < gsMat.height(); i++) { 
     for (int j = 0; j < gsMat.width(); j++) { 
      Point pnt = new Point(j, i); 
      if (pnt.inside(rect)) { 

       Log.D(TAG, "main", "outside : " + pnt); 
       Log.D(TAG, "main", "outside : " + gsMat.get(pnt.y, pnt.x)[0]); 
      } 
     } 
    } 

    5: Info: MainClass -> MainClass: image.Size(): 7x7 

    6: Info: MainClass -> MainClass: image.dump(): 
    [23, 23, 23, 26, 26, 26, 33, 33, 33, 49, 49, 49, 74, 74, 74, 80, 80, 80, 70, 70, 70; 
    22, 22, 22, 28, 28, 28, 45, 45, 45, 69, 69, 69, 82, 82, 82, 70, 70, 70, 61, 61, 61; 
    27, 27, 27, 37, 37, 37, 65, 65, 65, 96, 96, 96, 97, 97, 97, 68, 68, 68, 62, 62, 62; 
    49, 49, 49, 58, 58, 58, 79, 79, 79, 102, 102, 102, 100, 100, 100, 75, 75, 75, 77, 77, 77; 
    75, 75, 75, 79, 79, 79, 83, 83, 83, 91, 91, 91, 97, 97, 97, 95, 95, 95, 105, 105, 105; 
    81, 81, 81, 89, 89, 89, 89, 89, 89, 95, 95, 95, 114, 114, 114, 130, 130, 130, 140, 140, 140; 
    77, 77, 77, 89, 89, 89, 95, 95, 95, 105, 105, 105, 131, 131, 131, 153, 153, 153, 161, 161, 161] 
    7: Debug: MainClass -> main: outside : {2.0, 2.0} 
    8: Debug: MainClass -> main: outside : 65.0 
    9: Debug: MainClass -> main: outside : {3.0, 2.0} 
    10: Debug: MainClass -> main: outside : 96.0 
    11: Debug: MainClass -> main: outside : {4.0, 2.0} 
    12: Debug: MainClass -> main: outside : 97.0 
    13: Debug: MainClass -> main: outside : {2.0, 3.0} 
    14: Debug: MainClass -> main: outside : 79.0 
    15: Debug: MainClass -> main: outside : {3.0, 3.0} 
    16: Debug: MainClass -> main: outside : 102.0 
    17: Debug: MainClass -> main: outside : {4.0, 3.0} 
    18: Debug: MainClass -> main: outside : 100.0 
    19: Debug: MainClass -> main: outside : {2.0, 4.0} 
    20: Debug: MainClass -> main: outside : 83.0 
    21: Debug: MainClass -> main: outside : {3.0, 4.0} 
    22: Debug: MainClass -> main: outside : 91.0 
    23: Debug: MainClass -> main: outside : {4.0, 4.0} 
    24: Debug: MainClass -> main: outside : 97.0 
+0

請注意代碼如何創建,填充和打印整個矩陣 – Micka

+1

看起來像你有一個3通道圖像,所以每個3個元素合併成一個像素... – Micka

回答

1

根據您的打印圖像大小(7x7),但您傾倒的每行21個元素的矩陣數據,您可能有一個3通道數據類型,這意味着您的矩陣在第一個通道(.get(y,x)[0])像

[23, 26, 33, 49, 74, 80, 70; 
22, 28, 45, 69, 82; 70, 61; 
27, 37, 65, 96, 97, 68, 62; 
49, 58, 79, 102, 100, 75, 77 
75, 79, 83, 91, 97, 95, 105; 
81, 89, 89, 95, 114, 130, 140; 
77, 89, 95, 105, 131, 153, 161] 

其中在rect(x = 2,y = 2,width = 3,height = 3)中的打印元素恰好是預期的。

[65, 96, 97; 
79, 102, 100; 
83, 91, 97] 

因此,對於您的3通道墊,您沒有覆蓋3 * 3值,但3 * 3 * 3 = 27值!它是每個具有3個通道/值(例如RGB值)的3 * 3個元素。