Распространение радиоволн ВЧ/Реализация/radiation_set_t

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску

Реализует перечисление направлений излучения источником элементов волнового поля при использовании итерационного алгоритма рей-трейсинга.

template <class RadiationPatternType>
using radiation_set_t = dyn_radiation_set_dim_1_collection<RadiationPatternType>;
RadiationPatternTypeТип характеристики направленности, для которой осуществляется перечисление.

Тип реализует двумерную коллекцию направлений излучения, которая создается для заданного источника поля и зависит от частоты излучения, номера итерации, а также от позиций отражающих поверхностей и контрольных точек относительно источника.

В первом измерении перечисляются углы Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): \varphi (зенита), а во втором - (азимута) относительно некоторого центрального направления Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} . В случае отсутствия оптимизации по локальности отражающих поверхностей и контрольных точек Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} совпадает с главной осью источника. Если же используется оптимизация, вектор Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} совпадает с вектором, возвращаемым методом encompassing_aperture_t::central_point над объектом, в свою очередь возвращенным методом Source::EncompassingAperture источника.

Измерения индексируются с нуля. Первое, внешнее, измерение реализуется классами dyn_radiation_set_dim_1_collection и dyn_radiation_set_dim_1_enumerator, первый из которых реализует коллекцию направлений в этом измерении, а второй - перечисление коллекций нулевого измерения для каждого элемента коллекции в первом измерении.

Нулевое измерение реализуется классами dyn_radiation_set_dim_0_collection и dyn_radiation_set_dim_0_enumerator соответственно. Элементами коллекции в нулевом измерении являются пары угловых значений "азимут-зенит", реализуемые структурой angle_pair.

Реализация перечисленных классов определяет в нулевом измерении перечисление азимутов Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): \theta и в первом измерении - зенитов Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): \varphi .

При формировании коллекции направлений излучения производится минимизация числа элементов коллекции двумя способами. Первый - это зависимость ангулярного шага от значения функции характеристики направленности в текущей ангулярной позиции, как это описано для итерационного рей-трейсинга. Второй способ представляет собой ограничение сферы вокруг источника так, чтобы полученный сектор охватывал все отражающие поверхности и контрольные точки входной геометрической модели, и исключение из множества направлений тех из них, которые не принадлежат этому сектору. См. описание класса encompassing_aperture_t, который описывает такой сектор с помощью вектора направления на центральную точку сектора и ангулярного радиуса вокруг этого вектора.

Пусть Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \Delta_{0, \textrm{min}}} - управляющее значение, возвращенное методом Config::AngularSamplingRateMin, Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \Delta_{0, \textrm{max}}} - управляющее значение, возвращенное методом Config::AngularSamplingRateMax, Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle R\left(\omega,\theta,\varphi\right)} - функция характеристики направленности источника, Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle i\ge 0} - номер текущей итерации, Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \delta\left(S, \theta, \varphi\right)} - функция перехода от азимута Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): \theta и зенита Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): \varphi , выраженных относительно вектора Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} источника Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): S (см. рисунок), к азимуту и зениту, выраженным относительно главной оси источника, Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \begin{pmatrix}\theta_s & \varphi_s \end{pmatrix} = \delta\left(\vec{v}, \theta, \varphi\right)} . Тогда ангулярный шаг в нулевом измерении расчитывается как функция

Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \Delta_\theta\left(\omega,\theta,\varphi\right) = \frac{\Delta_{0, \textrm{min}} + \left(\Delta_{0, \textrm{max}} - \Delta_{0, \textrm{min}}\right)R\left(\omega,\theta_s,\varphi_s\right)}{2^i}} .

Зенит перечисляется в первом измерении с шагом Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \Delta_\varphi\left(\omega,\varphi\right)=\Delta_\theta\left(\omega,0,\varphi\right)} .

Функция Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \delta\left(S, \theta, \varphi\right)} преобразования ангулярных координат относительно Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} источника Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): S к базису Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): S реализуется поворотом так, чтобы он совпал с направлением главной оси источника (которая в свою очередь совпадает с аппликатой базиса источника). То есть используется матрица поворота

Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle T\left(\vec{v}\right)=\begin{bmatrix} \textrm{cos}\varphi_v & 0 & \textrm{sin}\varphi_v \\ 0 & 1 & 0 \\ -\textrm{sin}\varphi_v & 0 & \textrm{cos}\varphi_v \end{bmatrix}\begin{bmatrix} \textrm{cos}\theta_v & -\textrm{sin}\theta_v & 0 \\ \textrm{sin}\theta_v & \textrm{cos}\theta_v & 0 \\ 0 & 0 & 1 \end{bmatrix}} ,

в которой пара значений Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \begin{pmatrix}\theta_v & \varphi_v\end{pmatrix}} возвращается вызванным над Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} методом Antenna::ToSpherical антенны источника Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): S (см. Source::Antenna).

Тогда направление, заданное углами Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \left(\theta,\varphi\right)} относительно Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} , в базисе источника будет иметь представление

Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle P\left(\vec{v}, \theta,\varphi\right)=T\left(\vec{v}\right)\begin{bmatrix} \textrm{sin}\varphi\textrm{cos}\theta \\ \textrm{sin}\varphi\textrm{sin}\theta \\ \textrm{cos}\varphi \end{bmatrix}}

Поэтому результирующая пара углов вычисляется следующим образом

Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \begin{pmatrix}\theta_s & \varphi_s\end{pmatrix} = \left[ \begin{matrix} \begin{pmatrix}0 & 1\end{pmatrix} \Leftrightarrow P_x^2 + P_y^2 \equiv 0 \\ \begin{pmatrix}\textrm{sign}\left(P_y\right)\cdot\textrm{acos}\frac{P_x}{P_x^2+P_y^2} & \textrm{acos}\frac{P_z}{\left|P\right|}\end{pmatrix} \Leftrightarrow P_x^2 + P_y^2 \ne 0 \\ \end{matrix} \right.}

Область определения функции Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \delta\left(S, \theta, \varphi\right)} : Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \theta\in\left[0, 2\pi\right)} , Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \varphi\in\left[0, \varphi_{\textrm{max}}\right]\subset\left[0, \pi\right]} , где Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \varphi_{\textrm{max}}} - максимально возможный зенит - ангулярный радиус, значение которого возвращается методом encompassing_aperture_t::radius, сектора сферы вокруг источника, так что все отражающие объекты и контрольные точки геометрической модели при отображении на сферу оказываются внутри сектора. При этом вектор Невозможно разобрать выражение (MathML с запасными SVG или PNG (рекомендуется для современных браузеров и инструментов повышения доступности): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \vec{v}} , возвращаемый методом encompassing_aperture_t::central_point, направлен на центр такого сектора.