Дистанция

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

Производный от: Reactor

Поддерживаемые интерфейсы:

  • reactor

  • distance

Дистанция позволяет измерять расстояние между различными объектами в сцене, например, между двумя метками. Объекты, между которыми рассчитывается расстояние, должны поддерживать интерфейс 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()

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

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

Возбуждается, когда расстояние становится меньше заданного.

События Объекты отдалились (onMovedAside) и Объекты сблизились (onMovedCloser) возбуждаются