требуется уточнение в публичном списке документов <HitResult>hitTest (float xPx, float yPx) - PullRequest
0 голосов
/ 02 июня 2018

Онлайновый документ на hitTest гласит:

public List<HitResult> hitTest (float xPx, float yPx)
..............................
Parameters
xPx x coordinate in pixels
yPx y coordinate in pixels
.................................

Однако я не знаю, в какой системе координат это значение пикселя соответствует.

Фон: мы получили 2Dиспользовать алгоритм компьютерного зрения на основе образца arcore computervision_java.Полученное изображение имеет разрешение 1280x720 и GPU.Нам нужно найти 3D-координату пересечения 2D_point с плоскостью от Frame.однако результат hitTest не тот, который мы ожидали.

Я предполагаю, что, возможно, в hitTest нужно использовать изображение из фрейма (640x480 в разрешении).Мы также пытались масштабировать пиксельную координату с 1280x720 до 640x480, но результат все еще не имеет для нас никакого смысла.

Спасибо.Петр Инь

1 Ответ

0 голосов
/ 04 августа 2018

Я полностью согласен с тем, что документация

public List<HitResult> hitTest (float xPx, float yPx)

является расплывчатой.Но документация о перегруженном методе

public List<HitResult> hitTest (float[] origin3, int originOffset, float[] direction3, int directionOffset)

говорит

Аналогично hitTest (float, float), но принимает произвольный луч в координатах мирового пространствавместо точки на экране.

Следовательно, параметры метода hitTest (float xPx, float yPx) должны быть в пространство экрана .Изменение сигнатуры метода на hitTest (float screenSpaceX, float screenSpaceY) было бы намного более информативным и читабельным.

Наряду с

Rect displaySize = new Rect();
((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE))
  .getDefaultDisplay().getRectSize(displaySize);

, предоставляющим вам размер экрана, вы сможете выполнить правильный hitTest(float, float)вызовы.

...