2015-04-30 3 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 элемента на строку, вероятно, у вас есть трехканальный тип данных, что означает, что ваша матрица в первом канале (.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] 

, где ваши напечатанные элементы в прямоугольнике (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 * 3 элемента с 3 каналами/значениями (например, значения RGB).

Смежные вопросы