Шаблон:Распространение радиоволн ВЧ/Реализация/encompassing aperture t::unify/Алгоритм: различия между версиями
Строка 1: | Строка 1: | ||
Пусть объединяются два сектора сферы, релизуемые классом классом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t|encompassing_aperture_t]] - <math>\Omega_1=\left\langle\vec{c}_1, \alpha_1\right\rangle</math> и <math>\Omega_2=\left\langle\vec{c}_2, \alpha_2\right\rangle</math>, где <math>\vec{c}_i</math> - вектор направления на центральную точку <math>i</math>-го сектора (возвращаемый методом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t::central_point|encompassing_aperture_t::central_point]]), а <math>\alpha_i</math> - соответствующий ангулярный радиус (возвращаемый методом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t::radius|encompassing_aperture_t::radius]]). | Пусть объединяются два сектора сферы, релизуемые классом классом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t|encompassing_aperture_t]] - <math>\Omega_1=\left\langle\vec{c}_1, \alpha_1\right\rangle</math> и <math>\Omega_2=\left\langle\vec{c}_2, \alpha_2\right\rangle</math>, где <math>\vec{c}_i</math> - вектор направления на центральную точку <math>i</math>-го сектора (возвращаемый методом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t::central_point|encompassing_aperture_t::central_point]]), а <math>\alpha_i\in\left[0;\pi\right]</math> - соответствующий ангулярный радиус (возвращаемый методом [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t::radius|encompassing_aperture_t::radius]]). Сектор, у которого ангулярный радиус равен <math>\pi</math> охватывает сферу полностью независимо от вектора <math>\vec{c}_i</math>. | ||
[[Файл:encompassing_aperture_t.svg|thumb|Сектор [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t|encompassing_aperture_t]]|400px]] | [[Файл:encompassing_aperture_t.svg|thumb|Сектор [[Распространение радиоволн ВЧ/Реализация/encompassing_aperture_t|encompassing_aperture_t]]|400px]] | ||
Строка 80: | Строка 80: | ||
Во '''втором случае''' <math>\vec{c}_1\nparallel\vec{c}_2</math>, однако <math>\vec{c'}_1\|\vec{c'}_2</math> (то есть <math>\alpha_1 + \gamma + \alpha_2 \equiv \pi</math>). | Во '''втором случае''' <math>\vec{c}_1\nparallel\vec{c}_2</math>, однако <math>\vec{c'}_1\|\vec{c'}_2</math> (то есть <math>\alpha_1 + \gamma + \alpha_2 \equiv \pi</math>). | ||
'''Лемма''' | |||
:<math>0\le\alpha_1,\alpha_2<\frac{\pi}{2}</math>. | |||
Действительно, допустим <math>\alpha_1\ge\frac{\pi}{2}\Rightarrow\pi-\gamma-\alpha_2\ge\frac{\pi}{2}\Rightarrow\frac{\pi}{2}\ge\gamma+\alpha_2\Rightarrow\alpha_1\ge\gamma+\alpha_2\Rightarrow\Omega_2\subseteq\Omega_1</math>. | |||
''Противоречие'' ограничению, приведенному выше. | |||
Аналогично доказывается ограничение <math>0\le\alpha_2<\frac{\pi}{2}</math>. | |||
'''Лемма''' | |||
<math>\alpha_1</math> и <math>\alpha_2</math> не могут быть одновременно равны нулю. Иначе имел бы место случай 1 выше. | |||
'''Следствие''' | |||
:<math>0<\alpha_1+\alpha_2<\pi</math>. | |||
Поскольку один из ангулярных радиусов обязательно ненулевой, примем ограничение <math>\alpha_1>0</math> (тогда <math>\alpha_2\ge 0</math>). | |||
[[Файл:encompassing_aperture_t_c1s_par_c2s.svg|thumb| | [[Файл:encompassing_aperture_t_c1s_par_c2s.svg|thumb| |
Версия 18:35, 1 декабря 2018
Пусть объединяются два сектора сферы, релизуемые классом классом encompassing_aperture_t - и , где - вектор направления на центральную точку -го сектора (возвращаемый методом encompassing_aperture_t::central_point), а - соответствующий ангулярный радиус (возвращаемый методом encompassing_aperture_t::radius). Сектор, у которого ангулярный радиус равен охватывает сферу полностью независимо от вектора .

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