Расстояние¶
-
объект
Расстояние;
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
()¶ Приходит, когда расстояние равно заданному значению.
Parameters: - Значение / value – расстояние.
- Погрешность / measurementError – погрешность (радиус окрестности указанного значения).
-
событие
Неравно;
onNotEqual
()¶ Приходит, когда расстояние не равно заданному значению
Parameters: - Значение / value – расстояние.
- Погрешность / measurementError –
погрешность (радиус окрестности указанного значения).
События Равно (onEqual) и Неравно (onNotEqual) приходят, если текущее расстояние находится в пределах от Значение - Погрешность
до Значение + Погрешность
. На рисунке эта область обозначена оранжевым штрихом.
-
событие
Больше чем;
onGreater
()¶ Приходит, когда расстояние больше заданного значения.
Parameters: Значение / value – расстояние.
-
событие
Меньше чем;
onLess
()¶ Приходит, когда расстояние меньше заданного значения.
Parameters: Значение / value – расстояние.
-
событие
Принадлежит отрезку;
onInsideSegment
()¶ Приходит, когда расстояние принадлежит заданному отрезку (включая его границы).
Parameters: - От / valueFrom – левая граница отрезка.
- До / valueTo – правая граница отрезка.
Note
Если расстояние равно граничным значениям, событие приходит.
-
событие
Не принадлежит отрезку;
onOutsideSegment
()¶ Приходит, когда расстояние не принадлежит заданному отрезку.
Parameters: - От / valueFrom – левая граница отрезка.
- До / valueTo – правая граница отрезка.
Note
Если расстояние равно граничным значениям, событие не приходит.
События Равно (onEqual), Неравно (onNotEqual), Больше чем (onGreater), Меньше чем (onLess), Принадлежит отрезку (onInsideSegment) и Не принадлежит отрезку (onOutsideSegment) приходят при каждом вызове Рассчитать расстояние (updateState), если текущее расстояние удовлетворяет указанным в событиях параметрам. Например, в следующем сценарии событие Больше чем (onGreater) будет запускаться на каждом кадре (обычно, 60 раз в секунду!), если текущее расстояние будет больше 15 сантиметров:
-
событие
Объекты отдалились;
onMovedAside
()¶ Приходит, когда расстояние становится больше заданного.
Parameters: - Значение / value – значение, при котором приходит событие.
- Отклонение / minDeviation – величина, определяющая, на какой минимальное расстояние должны сблизиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value - minDeviation).
-
событие
Объекты сблизились;
onMovedCloser
()¶ Приходит, когда расстояние становится меньше заданного.
Parameters: - Значение / value – значение, при котором приходит событие.
- Отклонение / minDeviation – величина, определяющая, на какое максимальное расстояние должны отдалиться два объекта, чтобы указанное событие пришло вновь (рассчитывается, как value + minDeviation).
События Объекты отдалились (onMovedAside) и Объекты сблизились (onMovedCloser) запускаются, если текущее расстояние между двумя объектами соответсвенно больше или меньше заданного. Так как объекты практически никогда не находятся в состоянии абсолютного покоя, расстояние между ними может постоянно колебаться и постоянно пересекать заданные значения. Чтобы этого не происходило, необходимо задать параметр “Отклонение”. Он определяет разницу между текущим расстоянием и расстоянием, заданным параметром “Значение”, до преодоления которой событие повторно не придет.