Изменения

Перейти к: навигация, поиск

Пересечение отрезков на сфере

182 байта убрано, 17:08, 24 августа 2014
Проверка на пересечение двух отрезков на сфере
3) Проверим центр сферы на принадлежность тетраэдру. Если принадлежит то отрезки не пересекаются, иначе перейдем к шагу 4.
4) Подставим координаты точек в соотношение написанное выше и сравним результат Проверим с <tex>0</tex>. Если хотя бы для одной точки результат <tex>> 0</tex> то помощью поворота отрезки пересекаются, иначе нетна пересечение.
== Проверка на пересечение двух отрезков на сфере==
Сопоставим каждой точке на сфере луч, исходящий из центра сферы (точка <tex>O</tex>) и проходящий через эту точку. Тогда лучи сопоставляемые двум точкам будут образовывать плоскость. Необходимо научиться проверять лежит данная ли точка в плоскости образованной двумя другими точками. Итак у нас есть точки <tex>aC</tex> и в плоскости образованной лучами точек <tex>bA</tex> образующие плоскость, также есть точка и <tex>cB</tex>. Необходимо узнать расположение этой точки относительно плоскости. Вспомним о повороте. Необходимо посчитать определитель матрицы поворота и сравнить его знак с нулем.
[[Файл:Sphere1Sphere_1.png|right|1000|thumb|Плоскость, образованная центром сферы и точками <tex>A </tex> и <tex>B</tex>. Необходимо определить взаимное расположение плоскости и точки С]]
Рассмотрим три случая:
* <tex>sign(|A|) > 0</tex> тогда точка <tex>c</tex> лежит над плоскостью, образованной точками <tex>aO</tex>, <tex>A</tex> и <tex>bB</tex>.* <tex>sign(|A|) < 0</tex> тогда точка <tex>c</tex> лежит под плоскостью, образованной точками <tex>aO</tex>, <tex>A</tex> и <tex>bB</tex>.* <tex>sign(|A|) = 0</tex> тогда точка <tex>c</tex> лежит на плоскости, образованной точками <tex>aO</tex>, <tex>A</tex> и <tex>bB</tex>.
|statement=Если два отрезка на сфере пересекаются, то все их четыре точки находятся в одной полусфере.
|proof=
[[Файл:Sphere4Sphere_4.png|right|1000|thumb|Плоскость ОАХ]]Пусть есть отрезки: <tex>AB</tex> и <tex>CD</tex>. Точка пересечения <tex>X</tex>. Центр сферы - начало координат <tex>O</tex>.Найдем нужную полусферу. Это будет полусфера от окружности точек плоскости, образованной точками <tex>O</tex>, <tex>A</tex> и <tex>C</tex>, ориентированная так, чтобы содержать <tex>X</tex>.Проведем плоскость <tex>OAX</tex>, пересечем ее со сферой. На полученной окружности возьмем точку <tex>A'</tex> - диаметрально противоположную точке <tex>A</tex>. Точка <tex>B</tex> находится в нашей полусфере, потому что она находится "ближе" точки <tex>A'</tex>. Если бы она была дальше точки <tex>A'</tex>, то мы бы провели отрезок <tex>AB</tex> через другую половину сферы, и соответственно, точка <tex>X</tex> была бы не в выбранной полусфериполусфере.
Далее повторим рассуждения для точек <tex>C</tex> и <tex>D</tex>.
}}
Иначе, если точки не лежат в одной плоскости, рассмотрим следующий алгоритм.
Соединив Соединим концы отрезков, получим результатом будет тетрэдр.
{{Утверждение
Для того, чтобы найти такую грань, необходимо для каждой грани тетраэдра проверить поворот противоположной точки и центра окружности, и если знаки определителей матриц поворота оказались разные, то такая грань найдена.
Для того, чтобы проверить грань существование грани, отсекающей тетраэдр <tex>PABC</tex> от центра сферы, необходимо посчитать определитель матрицы поворота для четырех точек.
91
правка

Навигация