Расстояние¶
-
объект
Расстояние;DistanceReactor¶
Расстояние позволяет измерять расстояние между различными объектами в сцене, например, между двумя метками. Объекты, между которыми рассчитывается расстояние, должны поддерживать интерфейс node.transform.
Note
Расстояние имеет смысл измерять только когда оба объекта в поле зрения камеры. В противном случае рассчитанное расстояние неопределено.
Note
Все значения, касаемые расстояния, указываются в метрах, если явно не оговорено иное.
При своей работе расстояние вызывает различные события, соответствующие различным условиям на расстояние: Больше чем (onGreater), Меньше чем (onLess), Принадлежит отрезку (onInsideSegment) и т.п.
Расстояние¶
Вводится в Расстояние (DistanceReactor)
| Параметр | Описание |
|---|---|
| Первый объект (firstNodeReactor) | Первый объект для расчёта. |
| Второй объект (secondNodeReactor) | Второй объект для расчёта. |
-
параметр
Первый объект;firstNodeReactor¶ Параметр позволяет выбрать первый объект для расчёта расстояния. Это может быть, например, система координат, метка, текст, модель и т.д.
-
параметр
Второй объект;secondNodeReactor¶ Аналогично параметру Первый объект (firstNodeReactor).
Расчет расстояния¶
-
действие
Рассчитать расстояние;updateState()¶ Единственное действие объекта. Рассчитывает расстояние между выбранными объектами. При каждом вызове запускаются все события, удовлетворяющие текущемму расстоянию. Подробнее, см. Анализ расстояния.
Анализ расстояния¶
| Событие | Описание |
|---|---|
| Равно (onEqual) | Приходит, когда расстояние равно заданному значению. |
| Неравно (onNotEqual) | Приходит, когда расстояние не равно заданному значению |
| Больше чем (onGreater) | Приходит, когда расстояние больше заданного значения. |
| Меньше чем (onLess) | Приходит, когда расстояние меньше заданного значения. |
| Принадлежит отрезку (onInsideSegment) | Приходит, когда расстояние принадлежит заданному отрезку. |
| Не принадлежит отрезку (onOutsideSegment) | Приходит, когда расстояние не принадлежит заданному отрезку. |
| Объекты отдалились (onMovedAside) | Приходит, когда расстояние становится больше заданного. |
| Объекты сблизились (onMovedCloser) | Приходит, когда расстояние становится меньше заданного. |
Очень часто во время использования приложения с дополненной реальностью оптический трекинг работает в неидеальных условиях: может дрожать рука со смартфоном или веб камерой, меняться освещение, метки перемещаются по поверхности. Все это не позволяет рассчитывать расстояние в реальном времени со стопроцентной точностью. В связи c этим некоторые события имеют параметры для указания погрешности вычислений для более стабильной и плавной работы приложения.
-
событие
Равно;onEqual¶ Приходит, когда расстояние равно заданному значению.
Param Значение / value - number: расстояние. Param Погрешность / measurementError - number: погрешность (радиус окрестности указанного значения).
-
событие
Неравно;onNotEqual¶ Приходит, когда расстояние не равно заданному значению
Param Значение / value - number: расстояние. Param Погрешность / measurementError - number: погрешность (радиус окрестности указанного значения).
События Равно (onEqual) и Неравно (onNotEqual) приходят, если текущее расстояние находится в пределах от Значение - Погрешность до Значение + Погрешность. На рисунке эта область обозначена оранжевым штрихом.
-
событие
Больше чем;onGreater¶ Приходит, когда расстояние больше заданного значения.
Param Значение / value - number: расстояние.
-
событие
Меньше чем;onLess¶ Приходит, когда расстояние меньше заданного значения.
Param Значение / value - number: расстояние.
-
событие
Принадлежит отрезку;onInsideSegment¶ Приходит, когда расстояние принадлежит заданному отрезку (включая его границы).
Param От / valueFrom - number: левая граница отрезка. Param До / valueTo - number: правая граница отрезка.
Note
Если расстояние равно граничным значениям, событие приходит.
-
событие
Не принадлежит отрезку;onOutsideSegment¶ Приходит, когда расстояние не принадлежит заданному отрезку.
Param От / valueFrom - number: левая граница отрезка. Param До / valueTo - number: правая граница отрезка.
Note
Если расстояние равно граничным значениям, событие не приходит.
События Равно (onEqual), Неравно (onNotEqual), Больше чем (onGreater), Меньше чем (onLess), Принадлежит отрезку (onInsideSegment) и Не принадлежит отрезку (onOutsideSegment) приходят при каждом вызове Рассчитать расстояние (updateState), если текущее расстояние удовлетворяет указанным в событиях параметрам. Например, в следующем сценарии событие Больше чем (onGreater) будет запускаться на каждом кадре (обычно, 60 раз в секунду!), если текущее расстояние будет больше 15 сантиметров:
-
событие
Объекты отдалились;onMovedAside¶ Приходит, когда расстояние становится больше заданного.
Param Значение / value - number: значение, при котором приходит событие. Param Отклонение / minDeviation - number: величина, определяющая, на какой минимальное расстояние должны сблизиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value - minDeviation).
-
событие
Объекты сблизились;onMovedCloser¶ Приходит, когда расстояние становится меньше заданного.
Param Значение / value - number: значение, при котором приходит событие. Param Отклонение / minDeviation - number: величина, определяющая, на какое максимальное расстояние должны отдалиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value + minDeviation).
События Объекты отдалились (onMovedAside) и Объекты сблизились (onMovedCloser) запускаются, если текущее расстояние между двумя объектами соответсвенно больше или меньше заданного. Так как объекты практически никогда не находятся в состоянии абсолютного покоя, расстояние между ними может постоянно колебаться и постоянно пересекать заданные значения. Чтобы этого не происходило, необходимо задать параметр “Отклонение”. Он определяет разницу между текущим расстоянием и расстоянием, заданным параметром “Значение”, до преодоления которой событие повторно не придет.