Расстояние

объект Расстояние; DistanceReactor

Расстояние позволяет измерять расстояние между различными объектами в сцене, например, между двумя метками. Объекты, между которыми рассчитывается расстояние, должны поддерживать интерфейс node.transform.

Примечание

Расстояние имеет смысл измерять только когда оба объекта в поле зрения камеры. В противном случае рассчитанное расстояние неопределено.

Примечание

Все значения, касаемые расстояния, указываются в метрах, если явно не оговорено иное.

../_images/distance_screen_1.png

При своей работе расстояние вызывает различные события, соответствующие различным условиям на расстояние: Больше чем (onGreater), Меньше чем (onLess), Принадлежит отрезку (onInsideSegment) и т.п.

Расстояние

Вводится в Расстояние (DistanceReactor)

Параметр

Описание

Первый объект (firstNodeReactor)

Первый объект для расчёта.

Второй объект (secondNodeReactor)

Второй объект для расчёта.

параметр Первый объект; firstNodeReactor

Параметр позволяет выбрать первый объект для расчёта расстояния. Это может быть, например, система координат, метка, текст, модель и т.д.

параметр Второй объект; secondNodeReactor

Аналогично параметру Первый объект (firstNodeReactor).

Расчет расстояния

действие Рассчитать расстояние; updateState()

Единственное действие объекта. Рассчитывает расстояние между выбранными объектами. При каждом вызове запускаются все события, удовлетворяющие текущемму расстоянию. Подробнее, см. Анализ расстояния.

Анализ расстояния

Событие

Описание

Равно (onEqual)

Приходит, когда расстояние равно заданному значению.

Неравно (onNotEqual)

Приходит, когда расстояние не равно заданному значению

Больше чем (onGreater)

Приходит, когда расстояние больше заданного значения.

Меньше чем (onLess)

Приходит, когда расстояние меньше заданного значения.

Принадлежит отрезку (onInsideSegment)

Приходит, когда расстояние принадлежит заданному отрезку.

Не принадлежит отрезку (onOutsideSegment)

Приходит, когда расстояние не принадлежит заданному отрезку.

Объекты отдалились (onMovedAside)

Приходит, когда расстояние становится больше заданного.

Объекты сблизились (onMovedCloser)

Приходит, когда расстояние становится меньше заданного.

Очень часто во время использования приложения с дополненной реальностью оптический трекинг работает в неидеальных условиях: может дрожать рука со смартфоном или веб камерой, меняться освещение, метки перемещаются по поверхности. Все это не позволяет рассчитывать расстояние в реальном времени со стопроцентной точностью. В связи c этим некоторые события имеют параметры для указания погрешности вычислений для более стабильной и плавной работы приложения.

событие Равно; onEqual()

Приходит, когда расстояние равно заданному значению.

Параметры
  • Значение / value – расстояние.

  • Погрешность / measurementError – погрешность (радиус окрестности указанного значения).

событие Неравно; onNotEqual()

Приходит, когда расстояние не равно заданному значению

Параметры
  • Значение / value – расстояние.

  • Погрешность / measurementError

    погрешность (радиус окрестности указанного значения).

События Равно (onEqual) и Неравно (onNotEqual) приходят, если текущее расстояние находится в пределах от Значение - Погрешность до Значение + Погрешность. На рисунке эта область обозначена оранжевым штрихом.

../_images/distance_tip_1.png
событие Больше чем; onGreater()

Приходит, когда расстояние больше заданного значения.

Параметры

Значение / value – расстояние.

событие Меньше чем; onLess()

Приходит, когда расстояние меньше заданного значения.

Параметры

Значение / value – расстояние.

событие Принадлежит отрезку; onInsideSegment()

Приходит, когда расстояние принадлежит заданному отрезку (включая его границы).

Параметры
  • От / valueFrom – левая граница отрезка.

  • До / valueTo – правая граница отрезка.

Примечание

Если расстояние равно граничным значениям, событие приходит.

событие Не принадлежит отрезку; onOutsideSegment()

Приходит, когда расстояние не принадлежит заданному отрезку.

Параметры
  • От / valueFrom – левая граница отрезка.

  • До / valueTo – правая граница отрезка.

Примечание

Если расстояние равно граничным значениям, событие не приходит.

События Равно (onEqual), Неравно (onNotEqual), Больше чем (onGreater), Меньше чем (onLess), Принадлежит отрезку (onInsideSegment) и Не принадлежит отрезку (onOutsideSegment) приходят при каждом вызове Рассчитать расстояние (updateState), если текущее расстояние удовлетворяет указанным в событиях параметрам. Например, в следующем сценарии событие Больше чем (onGreater) будет запускаться на каждом кадре (обычно, 60 раз в секунду!), если текущее расстояние будет больше 15 сантиметров:

../_images/distance_onframe.png
событие Объекты отдалились; onMovedAside()

Приходит, когда расстояние становится больше заданного.

Параметры
  • Значение / value – значение, при котором приходит событие.

  • Отклонение / minDeviation – величина, определяющая, на какой минимальное расстояние должны сблизиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value - minDeviation).

событие Объекты сблизились; onMovedCloser()

Приходит, когда расстояние становится меньше заданного.

Параметры
  • Значение / value – значение, при котором приходит событие.

  • Отклонение / minDeviation – величина, определяющая, на какое максимальное расстояние должны отдалиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value + minDeviation).

События Объекты отдалились (onMovedAside) и Объекты сблизились (onMovedCloser) запускаются, если текущее расстояние между двумя объектами соответсвенно больше или меньше заданного. Так как объекты практически никогда не находятся в состоянии абсолютного покоя, расстояние между ними может постоянно колебаться и постоянно пересекать заданные значения. Чтобы этого не происходило, необходимо задать параметр «Отклонение». Он определяет разницу между текущим расстоянием и расстоянием, заданным параметром «Значение», до преодоления которой событие повторно не придет.