Распространение радиоволн ВЧ/Метод зеркальных отображений: различия между версиями
Строка 68: | Строка 68: | ||
#####<math>t_{mn} \leftarrow stack_{t}'</math> | #####<math>t_{mn} \leftarrow stack_{t}'</math> | ||
#####Ray <math>\leftarrow</math><tt> [[Распространение радиоволн ВЧ/Луч|Луч()]].Создать(Position, Вектор(Position,[[Распространение радиоволн ВЧ/Контрольная точка|<math>\rho'</math>]].Позиция(), 1))</tt> | #####Ray <math>\leftarrow</math><tt> [[Распространение радиоволн ВЧ/Луч|Луч()]].Создать(Position, Вектор(Position,[[Распространение радиоволн ВЧ/Контрольная точка|<math>\rho'</math>]].Позиция(), 1))</tt> | ||
#####Если <math>I' > 0</math> | #####Если <math>I' > 0</math> | ||
######<tt><math>P\leftarrow</math>[[Распространение радиоволн ВЧ/Луч|Ray]].Пересечение([[Распространение радиоволн ВЧ/Грань отражающего объекта|<math>t_{mn}</math>]].Плоскость грани())</tt> | ######<tt><math>P\leftarrow</math>[[Распространение радиоволн ВЧ/Луч|Ray]].Пересечение([[Распространение радиоволн ВЧ/Грань отражающего объекта|<math>t_{mn}</math>]].Плоскость грани())</tt> | ||
######Если <tt>[[Распространение радиоволн ВЧ/Грань отражающего объекта|<math>t_{mn}</math>]].Принадлежность(<math>P</math>) <math>\wedge</math> Расстояние(Position,<math>\rho'</math>.Позиция()) <math>></math> Расстояние(Position,<math>P</math>)</tt> | ######Если <tt>[[Распространение радиоволн ВЧ/Грань отражающего объекта|<math>t_{mn}</math>]].Принадлежность(<math>P</math>) <math>\wedge</math> Расстояние(Position,<math>\rho'</math>.Позиция()) <math>></math> Расстояние(Position,<math>P</math>)</tt> | ||
Строка 76: | Строка 74: | ||
######Иначе | ######Иначе | ||
#######Переход 1.1.8.1.14 | #######Переход 1.1.8.1.14 | ||
#####Иначе | |||
######<math>P\leftarrow</math><tt>[[Распространение радиоволн ВЧ/Контрольная точка|<math>\rho'</math>]].Позиция()</tt> | |||
#####<tt>IsShadowed(Ray, P, G)</tt> | #####<tt>IsShadowed(Ray, P, G)</tt> | ||
######Переход 1.1.8.1.14 | ######Переход 1.1.8.1.14 | ||
Строка 84: | Строка 84: | ||
######<math>I' \leftarrow I'-1</math> | ######<math>I' \leftarrow I'-1</math> | ||
######Переход 1.1.8.5 | ######Переход 1.1.8.5 | ||
#####<tt><math>\ | #####<tt><math>\rho'</math>.Зарегистрировать([[Распространение радиоволн ВЧ/Источник|<math>s_j</math>]].Напряженность<math>(\omega_n,~\theta,~\varphi</math>, Расстояние(Position, <math>\rho'</math>.Позиция()), [[Распространение радиоволн ВЧ/Геометрическая модель|G]].[[Распространение радиоволн ВЧ/Среда распространения|Среда распространения()]]<math>)</math>)</tt> | ||
#####Если <math>E > E_{end}</math> {{mark|text=См. обсуждение к статье.}} | #####Если <math>E > E_{end}</math> {{mark|text=См. обсуждение к статье.}} | ||
######<math>I \leftarrow I+1</math> | ######<math>I \leftarrow I+1</math> | ||
Строка 93: | Строка 93: | ||
#####Если <math>I < 0</math> | #####Если <math>I < 0</math> | ||
###### Переход 1.1.9 | ###### Переход 1.1.9 | ||
###<math>t_{m,n} \leftarrow stack_t</math> | |||
###<math>\rho' \leftarrow stack_{\rho}</math> | |||
###<math>s_j \leftarrow s'</math> | ###<math>s_j \leftarrow s'</math> | ||
Версия 15:16, 29 ноября 2016
Модель
Метод изображений (метод зеркальных отображений) широко применяется в электростатике и электродинамике для решения краевых задач. В частности, в приближении геометрической оптики данный метод позволяет построить картину хода лучей при любом числе отражений.
Суть метода состоит в построении лучей относительно мнимых изображений источника или приемника сигнала. Мнимые изображении строятся согласно правилам построения изображений в системе зеркал, здесь зеркала повторяют форму граничных поверхностей.
На рисунке представлена типичная ситуация в условиях плотной городской застройки, когда антенна приемного устройства находится в области геометрической тени относительно источника сигнала. Сигнал на приемной антенне является результатом переотражения радиоволны от внешней границы зданий, т.н. канал Релея. Зная координаты источника и приемника можно провести точную трассировку лучей с помощью простых геометрических построений.
Алгоритм
Предикат последнего отражения
В связи с тем, что количество элементарных модельных экспериментов, а следовательно и временные издержки алгоритма, зависит от числа отражающих поверхностей
и порядка отражения как , то важно определить максимальный существенный для текущих условий порядок переотражения сигнала. Введем предикат последнего отражения следующим образом:1. Если
, где- - пренебрежимый уровень сигнала
- .Напряженность( , .Позиция(), G.Среда распространения())
2. Если
, где- - жестко ограниченный пользователем порядок переотражения
3. Если
- - ограниченное пользователем максимальное число раз неприхода сигнала подряд
- - порядки переотражения, при которых сигнал пришел в контрольную точку
, где
Таким образом данный предикат имеет следующий вид
Предикат тени
IsShadowed(Луч, P, G)
Данный предикат проверяет наличие препятствия на пути Луча в некоторую точку P путем проверки нахождения отражающих объектов из множества G.Множество отражающих объектов(), где G - геометрическая модель, на отрезке Луч.Позиция() - P, исключая поверхности, на которых лежат P и Луч.Позиция(), если такие отражающие поверхности существуют.
- G.Множество отражающих объектов()
- Вернуть ЛОЖЬ
Предусловия
- аналог стековой памяти, хранящей информацию о занесенных в нее отражающих поверхностей
- , где
- Судя по алгоритму, - это стек только отражающих поверхностей - там нужны объекты? хранятся в виде ссылок на соответствующие элементы.
контрольных точках
- , где
- хранит всю информацию, соответствующую данной сущности
Операции
и аналогичны операциям push и pop соответственно- локальные переменные, аналогичные , использующиеся во внутренних подциклах
Операция
копирует переменную вОсновное течение
- G.Множество контрольных точек()
- G.Множество первичных источников()
- См. обсуждение к статье.
- Переход 1.1.8.1.4
- G.Множество отражающих объектов()
- .Построить зеркальное отображение(.Плоскость грани())
- Position .Антенна().Позиция()
- Ray Луч().Создать(Position, Вектор(Position,.Позиция(), 1))
- Если
- Ray.Пересечение(.Плоскость грани())
- Если .Принадлежность( ) Расстояние(Position, .Позиция()) Расстояние(Position, )
- Переход 1.1.8.1.11
- Иначе
- Переход 1.1.8.1.14
- Иначе
- IsShadowed(Ray, P, G)
- Переход 1.1.8.1.14
- Если
- Angle Ray.Угол пересечения(.Плоскость грани())
- Вторичный источник при рейтрейсинге.Создать(.Напряженность , Расстояние(Position, ), G.Среда распространения() Angle, )
- Переход 1.1.8.5
- .Напряженность , Расстояние(Position, .Позиция()), G.Среда распространения() ) .Зарегистрировать(
- Если См. обсуждение к статье.
- Переход 1.1.6
- Если
- Переход 1.1.9
.Множество отражающих поверхностей()
- G.Множество первичных источников()
Тот же алгоритм в более развернутой форме с наглядным представлением распараллеливаемых ветвей
- G.Множество контрольных точек()
- G.Множество первичных источников()
- .Антенна().Тип антенны().Амплитудно-частотная характеристика()
- Луч().Создать(.Антенна().Позиция(), Вектор(.Антенна().Позиция(),.Позиция(), 1))Излучение прямых лучей непосредственно в контрольные точки
- .Позиция()
- Если G
- .Напряженность( , G.Среда распространения())) Регистрация прямых лучей .Зарегистрировать(
- G.Множество отражающих объектов() Создание мнимых приемников 1-го порядка
- .Антенна().Тип антенны().Амплитудно-частотная характеристика()
- G.Множество первичных источников()