Распространение радиоволн ВЧ/Метод зеркальных отображений: различия между версиями
Nigiluk (обсуждение | вклад) |
Nigiluk (обсуждение | вклад) |
||
Строка 30: | Строка 30: | ||
#<math>B \leftarrow</math> ИСТИНА | #<math>B \leftarrow</math> ИСТИНА | ||
#ВЫХОД | #ВЫХОД | ||
===Рекурсия=== | |||
<tt>NewLevel(I, Стек_точек, Стек_граней, Источник_1, Контрольная_точка, Частота, G)</tt> | |||
#<tt><math>stack_{\rho} \leftarrow</math> Стек_точек</tt> | |||
#<tt><math>stack_t \leftarrow</math> Стек_граней</tt> | |||
#<tt><math>s \leftarrow</math> Источник_1</tt> | |||
#<tt><math>\omega \leftarrow</math> Частота</tt> | |||
#<tt><math>\Rho \leftarrow</math> Контрольная_точка</tt> | |||
#<math>I \leftarrow I+1</math> | |||
#<math>\rho \Leftarrow stack_{\rho}</math> | |||
#<math>\forall ~ f_m\in</math><tt> [[Распространение радиоволн ВЧ/Геометрическая модель|G]].Множество отражающих объектов()</tt> | |||
##<math>\forall ~ t_{mn} \in f_m</math><tt>.Множество отражающих поверхностей()</tt> | |||
###<tt><math>\rho \leftarrow</math> [[Распространение радиоволн ВЧ/Точка|<math>\rho</math>]].Построить зеркальное отображение([[Распространение радиоволн ВЧ/Грань отражающего объекта|<math>t_{mn}</math>]].Плоскость грани())</tt> | |||
###<math>stack_{\rho} \leftarrow \rho</math> | |||
###<math>stack_t \leftarrow t_{mn}</math> | |||
###<tt><math>[S,~B] \leftarrow </math> Tracing(<math>I,~stack_{\rho},~stack_t,~s,~\omega,~</math> [[Распространение радиоволн ВЧ/Геометрическая модель|G]])</tt> | |||
###Если <math>B</math> | |||
####<tt><math>P \leftarrow</math> [[Распространение радиоволн ВЧ/Источник|<math>S</math>]].[[Распространение радиоволн ВЧ/Антенна|Антенна()]].Позиция()</tt> | |||
####<tt><math>p \leftarrow</math> [[Распространение радиоволн ВЧ/Контрольная точка|<math>\Rho</math>]].Позиция()</tt> | |||
####<tt><math>Ray\leftarrow</math> [[Распространение радиоволн ВЧ/Луч|Луч()]].Создать(<math>P</math>, Вектор(<math>P</math>, <math>p</math>, 1))</tt> | |||
####Если НЕ <tt>IsShadowed(<math>Ray,p,</math>[[Распространение радиоволн ВЧ/Геометрическая модель|G]])</tt> | |||
#####<tt><math>\Rho</math>.Зарегистрировать([[Распространение радиоволн ВЧ/Источник|<math>S</math>]].Напряженность(<math>\omega,~p</math>, [[Распространение радиоволн ВЧ/Геометрическая модель|G]].[[Распространение радиоволн ВЧ/Среда распространения|Среда распространения()]]))</tt> | |||
###Если НЕ <tt>IsEnd(<math>E,~I~,i</math>)</tt> | |||
####<tt>NewLevel(<math>I,~stack_{\rho},~stack_t,~s,~\Rho,~\omega,~</math> [[Распространение радиоволн ВЧ/Геометрическая модель|G]])</tt> | |||
###<math>\rho \leftarrow stack_{\rho}</math> | |||
###<math>t_{mn} \leftarrow stack_t</math> | |||
===Предикат последнего отражения=== | ===Предикат последнего отражения=== | ||
Строка 52: | Строка 80: | ||
Данный предикат проверяет наличие препятствия на пути <tt>[[Распространение радиоволн ВЧ/Луч|Луча]]</tt> в некоторую [[Распространение радиоволн ВЧ/Точка|точку]] P путем проверки нахождения отражающих объектов из множества G.Множество отражающих объектов(), где G - геометрическая модель, на отрезке Луч.Позиция() - P, исключая поверхности, на которых лежат P и Луч.Позиция(), если такие отражающие поверхности существуют. | Данный предикат проверяет наличие препятствия на пути <tt>[[Распространение радиоволн ВЧ/Луч|Луча]]</tt> в некоторую [[Распространение радиоволн ВЧ/Точка|точку]] P путем проверки нахождения отражающих объектов из множества G.Множество отражающих объектов(), где G - геометрическая модель, на отрезке Луч.Позиция() - P, исключая поверхности, на которых лежат P и Луч.Позиция(), если такие отражающие поверхности существуют. | ||
#<tt><math>P \leftarrow</math> Точка</tt> | |||
#<math>\forall ~ f_m\in</math><tt> [[Распространение радиоволн ВЧ/Геометрическая модель|G]].Множество отражающих объектов()</tt> | #<math>\forall ~ f_m\in</math><tt> [[Распространение радиоволн ВЧ/Геометрическая модель|G]].Множество отражающих объектов()</tt> | ||
##<math>\forall ~ t_{mn} \in f_m</math><tt>.Множество отражающих поверхностей()</tt> | ##<math>\forall ~ t_{mn} \in f_m</math><tt>.Множество отражающих поверхностей()</tt> |
Версия 00:56, 20 декабря 2016
Модель
Метод изображений (метод зеркальных отображений) широко применяется в электростатике и электродинамике для решения краевых задач. В частности, в приближении геометрической оптики данный метод позволяет построить картину хода лучей при любом числе отражений.
Суть метода состоит в построении лучей относительно мнимых изображений источника или приемника сигнала. Мнимые изображении строятся согласно правилам построения изображений в системе зеркал, здесь зеркала повторяют форму граничных поверхностей.
На рисунке представлена типичная ситуация в условиях плотной городской застройки, когда антенна приемного устройства находится в области геометрической тени относительно источника сигнала. Сигнал на приемной антенне является результатом переотражения радиоволны от внешней границы зданий, т.н. канал Релея. Зная координаты источника и приемника можно провести точную трассировку лучей с помощью простых геометрических построений.
Алгоритм
Инициализация функций
Функция трассировки
[Источник_2, B]=Tracing(I, Стек_точек, Стек_граней, Источник_1, Частота, G)
- Источник_1
- Пока
- Стек_точек
- Стек_граней
- .Антенна().Позиция()
- Луч().Создать( , Вектор( , ,1))
- .Пересечение( .Плоскость грани())
- Если
- .Угол пересечения( .Плоскость грани())
- Вторичный источник при рейтрейсинге.Создать( .Напряженность(Частота, , G.Среда распространения), , , )
.Принадлежность( ) Расстояние( ) Расстояние( ) НЕ IsShadowed( , , G)
- Иначе
- ЛОЖЬ
- ВЫХОД
- Источник_2
- ИСТИНА
- ВЫХОД
Рекурсия
NewLevel(I, Стек_точек, Стек_граней, Источник_1, Контрольная_точка, Частота, G)
- Стек_точек
- Стек_граней
- Источник_1
- Частота
- Контрольная_точка
- G.Множество отражающих объектов()
Предикат последнего отражения
IsEnd(E, I, i)
В связи с тем, что количество элементарных модельных экспериментов, а следовательно и временные издержки алгоритма, зависит от числа отражающих поверхностей
и порядка отражения как , то важно определить максимальный существенный для текущих условий порядок переотражения сигнала. Введем предикат последнего отражения следующим образом:1. Если
, где- - пренебрежимый уровень сигнала
- .Напряженность( , .Позиция(), G.Среда распространения())
2. Если
, где- - жестко ограниченный пользователем порядок переотражения
3. Если
- - ограниченное пользователем максимальное число раз неприхода сигнала подряд
- - порядки переотражения, при которых сигнал пришел в контрольную точку
, где
Таким образом данный предикат имеет следующий вид IsEnd(E, I, i)
Предикат тени
IsShadowed(Луч, Точка, 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.8
- G.Множество первичных источников()
- G.Множество контрольных точек()
- G.Множество первичных источников()
- .Антенна().Тип антенны().Амплитудно-частотная характеристика()
- G.Множество первичных источников()