Шаблон:Распространение радиоволн ВЧ/Реализация/encompassing aperture t::unify/Алгоритм: различия между версиями
Строка 13: | Строка 13: | ||
Диаметральное сечение сферы, которому принадлежат вектора <math>\vec{c}_1</math> и <math>\vec{c}_2</math>. Если <math>\vec{c'}_1\nparallel\vec{c'}_2</math>, то вектор <math>\vec{c}_{12}</math>, задающий направление на центральную точку объединяющего сектора, будет являться нормализованной суммой векторов <math>\vec{c'}_1</math> и <math>\vec{c'}_2</math>, если <math>\alpha_{12}<\frac{\pi}{2}</math> и противоположен этой сумме, если <math>\alpha_{12}>\frac{\pi}{2}</math>.|400px]] | Диаметральное сечение сферы, которому принадлежат вектора <math>\vec{c}_1</math> и <math>\vec{c}_2</math>. Если <math>\vec{c'}_1\nparallel\vec{c'}_2</math>, то вектор <math>\vec{c}_{12}</math>, задающий направление на центральную точку объединяющего сектора, будет являться нормализованной суммой векторов <math>\vec{c'}_1</math> и <math>\vec{c'}_2</math>, если <math>\alpha_{12}<\frac{\pi}{2}</math> и противоположен этой сумме, если <math>\alpha_{12}>\frac{\pi}{2}</math>.|400px]] | ||
Пусть далее <math>\ | Пусть далее <math>\cos \gamma=\frac{\vec{c}_1\cdot\vec{c}_2}{\left|\vec{c}_1\right|\cdot\left|\vec{c}_2\right|}</math>, где <math>\gamma</math> - угол между <math>\vec{c}_1</math> и <math>\vec{c}_2</math>. | ||
Существует три случая. | Существует три случая. | ||
[[Файл:encompassing_aperture_t_c1_par_c2.svg|thumb| | [[Файл:encompassing_aperture_t_c1_par_c2.svg|thumb| | ||
Объединение секторов, у которых <math>\vec{c}_1\|\vec{c}_2</math>.|400px]] | Объединение секторов, у которых <math>\vec{c}_1\|\vec{c}_2</math> (''первый случай'').|400px]] | ||
Рассмотрим '''первый случай''', когда <math>\vec{c}_1\|\vec{c}_2</math> (то есть <math>\ | Рассмотрим '''первый случай''', когда <math>\vec{c}_1\|\vec{c}_2</math> (то есть <math>\cos \gamma\equiv-1</math>). Поскольку длины всех векторов равны единице, <math>\vec{c}_2=-\vec{c}_1</math>, а количество плоскостей, которым одновременно могут принадлежать <math>\vec{c}_1</math> и <math>\vec{c}_2</math> бесконечно, вследствие чего количество возможных секторов минимальной площади, объединяющих <math>\Omega_1</math> и <math>\Omega_2</math>, также бесконечно и зависит от того на какой из плоскостей будут принадлежать ''выбранные'' <math>\vec{c'}_1</math> и <math>\vec{c'}_2</math>; и этот выбор будет сводится к выбору диаметральной плоскости, проходящей через <math>\vec{c}_1</math>. | ||
Этот выбор можно сделать, если задать произвольный вектор <math>\vec{c}_n</math>, перпендикулярный <math>\vec{c}_1</math>. | Этот выбор можно сделать, если задать произвольный вектор <math>\vec{c}_n</math>, перпендикулярный <math>\vec{c}_1</math>. | ||
Строка 34: | Строка 34: | ||
Для нахождения вектора <math>\vec{c'}_{12}</math> достаточно выразить его в базисе <math>\left\langle\vec{c}_1,\vec{c}_n\right\rangle</math> и осуществить переход к мировой системе координат входной модели. Как видно из рисунка, в указанном базисе вектор <math>\vec{c'}_{12}</math> имеет координаты | Для нахождения вектора <math>\vec{c'}_{12}</math> достаточно выразить его в базисе <math>\left\langle\vec{c}_1,\vec{c}_n\right\rangle</math> и осуществить переход к мировой системе координат входной модели. Как видно из рисунка, в указанном базисе вектор <math>\vec{c'}_{12}</math> имеет координаты | ||
:<math>\begin{pmatrix} | :<math>\begin{pmatrix} | ||
\left|\vec{c}_1\right|\cdot\ | \left|\vec{c}_1\right|\cdot\cos \left(\frac{\pi}{2} - \beta\right)\cos \left(\frac{\pi}{2}-\left(\alpha_1 + \beta\right)\right) \\ | ||
\left|\vec{c}_1\right|\cdot\ | \left|\vec{c}_1\right|\cdot\cos \left(\frac{\pi}{2} - \beta\right)\sin \left(\frac{\pi}{2}-\left(\alpha_1 + \beta\right)\right) | ||
\end{pmatrix} = \begin{pmatrix} | \end{pmatrix} = \begin{pmatrix} | ||
\ | \cos \left(\frac{\pi}{2} - \beta\right)\cos \left(\frac{\pi}{2}-\left(\alpha_1 + \beta\right)\right) \\ | ||
\ | \cos \left(\frac{\pi}{2} - \beta\right)\sin \left(\frac{\pi}{2}-\left(\alpha_1 + \beta\right)\right) | ||
\end{pmatrix}</math>, | \end{pmatrix}</math>, | ||
Строка 46: | Строка 46: | ||
:<math>\vec{c'}_{12}=\begin{pmatrix}\vec{c}_1 & \vec{c}_n\end{pmatrix} | :<math>\vec{c'}_{12}=\begin{pmatrix}\vec{c}_1 & \vec{c}_n\end{pmatrix} | ||
\begin{pmatrix} | \begin{pmatrix} | ||
\ | \cos \left(\frac{\pi}{2} - \frac{\alpha_1 + \alpha_2}{2}\right)\cos \left(\frac{\pi}{2}+\frac{\alpha_1 - \alpha_2}{2}\right) \\ | ||
\ | \cos \left(\frac{\pi}{2} - \frac{\alpha_1 + \alpha_2}{2}\right)\sin \left(\frac{\pi}{2}+\frac{\alpha_1 - \alpha_2}{2}\right) | ||
\end{pmatrix} = \ | \end{pmatrix} = \cos \left(\frac{\pi}{2} - \frac{\alpha_1 + \alpha_2}{2}\right)\begin{pmatrix}\vec{c}_1 & \vec{c}_n\end{pmatrix} | ||
\begin{pmatrix} | \begin{pmatrix} | ||
-\ | -\sin \frac{\alpha_1 - \alpha_2}{2} \\ | ||
\ | \cos \frac{\alpha_1 - \alpha_2}{2} | ||
\end{pmatrix}</math>. | \end{pmatrix}</math>. | ||
Пусть <math>\tau=-\ | Пусть <math>\tau=-\cos \left(\frac{\pi}{2} - \frac{\alpha_1 + \alpha_2}{2}\right)</math> и <math>\vec{c''}_{12} = \begin{pmatrix}\vec{c}_1 & \vec{c}_n\end{pmatrix} | ||
\begin{pmatrix} | \begin{pmatrix} | ||
\ | \sin \frac{\alpha_1 - \alpha_2}{2} \\ | ||
\ | \cos \frac{\alpha_1 - \alpha_2}{2} | ||
\end{pmatrix}</math>. | \end{pmatrix}</math>. | ||
Строка 71: | Строка 71: | ||
[[Файл:encompassing_aperture_t_c1s_par_c2s.svg|thumb| | [[Файл:encompassing_aperture_t_c1s_par_c2s.svg|thumb| | ||
Объединение секторов, у которых <math>\vec{c'}_1\|\vec{c'}_2</math>.|400px]] | Объединение секторов, у которых <math>\vec{c'}_1\|\vec{c'}_2</math> (''второй случай'').|400px]] | ||
Решение задачи объединения сводится к поиску вектрра <math>\vec{c}_{12}</math>, перпендикулярного <math>\vec{c'}_1</math> (и c' | Решение задачи объединения сводится к поиску вектрра <math>\vec{c}_{12}</math>, перпендикулярного <math>\vec{c'}_1</math> (и <math>\vec{c'}_2</math>), лежащего в плоскости <math>\vec{c}_1</math> и <math>\vec{c}_2</math>, имеющего острый угол одновременно с <math>\vec{c}_1</math> и с <math>\vec{c}_2</math> и нормализованного. | ||
Поскольку вектора | Поскольку вектора <math>\vec{c}_1</math> и <math>\vec{c}_2</math> линейно-независимы, их можно использовать в качестве базиса для поиска вектора, сонаправленного с <math>\vec{c}_{12}</math>, следующим образом. | ||
Опустим перпендикуляр от конца одного из векторов, например <math>\vec{c}_1</math>, на вектор <math>\vec{c}_{12}</math>, перперндикулярный <math>\vec{c'}_1</math> и образующий острый угол с <math>\vec{c}_1</math>. Обозначим вектор, связанный с направленным отрезком, который исходит от центра сферы к точке пересечения <math>\vec{c}_{12}</math> и проведенного перпендикуляра, как <math>\vec{c'}_{12}</math>. Такой вектор очевидно будет сонаправлен с <math>\vec{c}_{12}</math>, а его длина будет равна | |||
:<math>\left|\vec{c'}_{12}\right|=\left|\vec{c}_1\right|\sin \alpha_1=\sin \alpha_1</math>; | |||
:<math>\vec{c}_{12} = \tau\vec{c'}_{12}</math>. | |||
Обозначим как <math>\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,x}</math> и <math>\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,y}</math> соответственно проекции вектора <math>\vec{c'}_{12}</math> на <math>\vec{c}_1</math> и <math>\vec{c}_2</math> а равно координаты вектора <math>\vec{c'}_{12}</math> в базисе <math>\left\langle\vec{c}_1,\vec{c}_2\right\rangle</math>. Из теоремы синусов следует, что | |||
:<math>\frac{\sin \left(\alpha_1+\alpha_2\right)}{\left|\vec{c'}_{12}\right|}= | |||
\frac{\sin \left(\alpha_1+\alpha_2\right)}{\sin \alpha_1}= | |||
\frac{\sin \left(\frac{\pi}{2} - \alpha_2\right)}{\left|\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,x}\right|}= | |||
\frac{\cos \alpha_2}{\left|\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,x}\right|}= | |||
\frac{\sin \left(\frac{\pi}{2} - \alpha_1\right)}{\left|\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,y}\right|}= | |||
\frac{\cos \alpha_1}{\left|\vec{c'}_{12,\left\langle\vec{c}_1,\vec{c}_2\right\rangle,y}\right|}</math>. | |||
Тогда в базисе <math>\left\langle\vec{c}_1,\vec{c}_2\right\rangle</math> вектор <math>\vec{c'}_{12}</math> будет равен: | |||
:<math>\vec{c'}_{12}=\frac{\sin \alpha_1}{\sin \left(\alpha_1+\alpha_2\right)}\begin{pmatrix}\vec{c}_1 & \vec{c}_2\end{pmatrix} | |||
\begin{pmatrix} | |||
\cos\alpha_2 \\ | |||
\cos\alpha_1 | |||
\end{pmatrix}</math>. |
Версия 16:57, 1 декабря 2018
Пусть объединяются два сектора сферы, релизуемые классом классом encompassing_aperture_t - и , где - вектор направления на центральную точку -го сектора (возвращаемый методом encompassing_aperture_t::central_point), а - соответствующий ангулярный радиус (возвращаемый методом encompassing_aperture_t::radius).

В результате объединения создается новый сектор
.Вектора
могут быть либо нулевыми либо единичными. Сектор с нулевым вектором направления считается нейтральным по операции объединения, т.е. .Далее рассматривается случай, в котором
.Поскольку направленные отрезки
и исходят из одной точки - центра сферы, оба отрезка принадлежат одной плоскости, причем эта плоскость является диаметральным сечением сферы. Поэтому задача поиска объединяющего сектора, то есть вектора и ангулярного радиуса , становится двумерной.Пусть далее
, где - угол между и .Существует три случая.
Рассмотрим первый случай, когда
(то есть ). Поскольку длины всех векторов равны единице, , а количество плоскостей, которым одновременно могут принадлежать и бесконечно, вследствие чего количество возможных секторов минимальной площади, объединяющих и , также бесконечно и зависит от того на какой из плоскостей будут принадлежать выбранные и ; и этот выбор будет сводится к выбору диаметральной плоскости, проходящей через .Этот выбор можно сделать, если задать произвольный вектор
, перпендикулярный .В описываемой реализации
- .
Тогда на плоскости, которой одновременно принадлежат
, и , будет однозначно определен вектор , отстоящий на одинаковом угловом расстоянии от векторов и и, поэтому, параллельный вектору центральной точки сектора-объединения.Для нахождения вектора
достаточно выразить его в базисе и осуществить переход к мировой системе координат входной модели. Как видно из рисунка, в указанном базисе вектор имеет координаты- ,
причем
.Тогда в мировых координатах
- .
Пусть
и .Тогда
.Отсюда
- ,
а ангулярный радиус будет равен
- .
Во втором случае
, однако (то есть ).Решение задачи объединения сводится к поиску вектрра
, перпендикулярного (и ), лежащего в плоскости и , имеющего острый угол одновременно с и с и нормализованного.Поскольку вектора
и линейно-независимы, их можно использовать в качестве базиса для поиска вектора, сонаправленного с , следующим образом.Опустим перпендикуляр от конца одного из векторов, например
, на вектор , перперндикулярный и образующий острый угол с . Обозначим вектор, связанный с направленным отрезком, который исходит от центра сферы к точке пересечения и проведенного перпендикуляра, как . Такой вектор очевидно будет сонаправлен с , а его длина будет равна- ;
- .
Обозначим как
и соответственно проекции вектора на и а равно координаты вектора в базисе . Из теоремы синусов следует, что- .
Тогда в базисе
вектор будет равен:- .