<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.216.66.103&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.216.66.103&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/91.216.66.103"/>
		<updated>2026-05-19T16:38:19Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%83%D0%BF%D0%BB%D0%BE%D1%81%D0%BA%D0%BE%D1%81%D1%82%D0%B5%D0%B9,_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C_%D1%81_%D0%B2%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D1%8B%D0%BC%D0%B8_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8&amp;diff=51488</id>
		<title>Пересечение полуплоскостей, связь с выпуклыми оболочками</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D1%83%D0%BF%D0%BB%D0%BE%D1%81%D0%BA%D0%BE%D1%81%D1%82%D0%B5%D0%B9,_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C_%D1%81_%D0%B2%D1%8B%D0%BF%D1%83%D0%BA%D0%BB%D1%8B%D0%BC%D0%B8_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8&amp;diff=51488"/>
				<updated>2016-01-19T11:03:42Z</updated>
		
		<summary type="html">&lt;p&gt;91.216.66.103: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:samplesHalfspaces.png|400px|thumb|right|Пересечение существует и выпукло, неограниченно или пусто]]&lt;br /&gt;
&lt;br /&gt;
Задача: есть конечное множество полуплоскостей, найти фигуру их пересечения или сообщить что оно пусто.&lt;br /&gt;
&lt;br /&gt;
Для начала заметим, что если пересечение не пусто, то оно выпукло. (Доказательство {{---}} Пересечение выпуклых фигур выпукло, а полуплоскость выпукла)&lt;br /&gt;
&lt;br /&gt;
Пусть полуплоскости заданы уравнениями прямых и ориентацией, с какой стороны от прямой лежит полуплоскость.&lt;br /&gt;
&lt;br /&gt;
Сначала рассмотрим все полуплоскости, которые &amp;quot;смотрят&amp;quot;, то есть ориентированны, вниз. Аналогично можно рассмотреть все полуплоскости, которые ориентированны вверх.&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&lt;br /&gt;
[[Файл:halfSpaces.png|400px|thumb|right|Нужна ли полуплоскость &amp;lt;tex&amp;gt; l'' &amp;lt;/tex&amp;gt;?]]&lt;br /&gt;
Предикат проверки (см. рисунок) того, что прямая &amp;lt;tex&amp;gt; l'' : A''x + B''y + C'' = 0 &amp;lt;/tex&amp;gt; лежит над пересечением прямых &amp;lt;tex&amp;gt; l : Ax + By + C = 0 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; l' : A'x + B'y + C' = 0 &amp;lt;/tex&amp;gt; равен знаку определителя &amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{vmatrix} &lt;br /&gt;
A &amp;amp; B &amp;amp; C \\ &lt;br /&gt;
A' &amp;amp; B' &amp;amp; C' \\ &lt;br /&gt;
A'' &amp;amp; B'' &amp;amp; C'' &lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;. &lt;br /&gt;
|proof=&lt;br /&gt;
Для проверки предиката нужно определить знак выражения &amp;lt;tex&amp;gt; A''x_0 + B''y_0 + C'' &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; (x_0, y_0) &amp;lt;/tex&amp;gt; {{---}} точка пересечения прямых &amp;lt;tex&amp;gt; l' &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; l &amp;lt;/tex&amp;gt;. Эта точка находится из уравнения &amp;lt;tex&amp;gt; \begin{pmatrix} &lt;br /&gt;
A &amp;amp; B\\ &lt;br /&gt;
A' &amp;amp; B' &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\begin{pmatrix} &lt;br /&gt;
x_0\\ &lt;br /&gt;
y_0 &lt;br /&gt;
\end{pmatrix} =&lt;br /&gt;
\begin{pmatrix} &lt;br /&gt;
-C\\ &lt;br /&gt;
-C' &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/tex&amp;gt;. Решением будет &amp;lt;tex&amp;gt;&lt;br /&gt;
\begin{pmatrix} &lt;br /&gt;
x_0\\ &lt;br /&gt;
y_0 &lt;br /&gt;
\end{pmatrix} =&lt;br /&gt;
\frac{&lt;br /&gt;
\begin{pmatrix} &lt;br /&gt;
B' &amp;amp; -B\\ &lt;br /&gt;
-A' &amp;amp; A &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\begin{pmatrix} &lt;br /&gt;
-C\\ &lt;br /&gt;
-C' &lt;br /&gt;
\end{pmatrix}}&lt;br /&gt;
{ &lt;br /&gt;
\begin{vmatrix} &lt;br /&gt;
A &amp;amp; B\\ &lt;br /&gt;
A' &amp;amp; B'&lt;br /&gt;
\end{vmatrix}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/tex&amp;gt;. Подставим это решение в &amp;lt;tex&amp;gt; A''x_0 + B''y_0 + C'' &amp;lt;/tex&amp;gt; и домножим на определитель.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;&lt;br /&gt;
A'' (B'; -B)(-C; -C') + B'' (-A'; A)(-C; -C') + C'' \begin{vmatrix} A &amp;amp; B \\ A' &amp;amp; B' \end{vmatrix} &lt;br /&gt;
= A'' \begin{vmatrix} B' &amp;amp; B \\ -C' &amp;amp; -C \end{vmatrix} - B'' \begin{vmatrix} A' &amp;amp; A \\ -C' &amp;amp; -C \end{vmatrix} + C'' \begin{vmatrix} A &amp;amp; A' \\ B &amp;amp; B' \end{vmatrix} &lt;br /&gt;
= \begin{vmatrix} A'' &amp;amp; A' &amp;amp; A \\ B'' &amp;amp; B' &amp;amp; B \\ -C'' &amp;amp; -C' &amp;amp; -C \end{vmatrix} &lt;br /&gt;
= \begin{vmatrix} A &amp;amp; B &amp;amp; C \\ A' &amp;amp; B' &amp;amp; C' \\ A'' &amp;amp; B'' &amp;amp; C'' \end{vmatrix} &lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Таким образом, если представить прямую &amp;lt;tex&amp;gt; Ax + By + C = 0 &amp;lt;/tex&amp;gt; как точку с однородными координатами &amp;lt;tex&amp;gt; (A, B, C) &amp;lt;/tex&amp;gt;, то этот предикат {{---}} всего лишь поворот, а проверка предиката {{---}} проверка очередной точки в [[Статические выпуклые оболочки: Джарвис, Грэхем, Эндрю, Чен, QuickHull#Алгоритм Грэхема|обходе Грэхема]] для нахождения выпуклой оболочки.&lt;br /&gt;
&lt;br /&gt;
Алгоритм:&lt;br /&gt;
* Отсортировать все полуплоскости по углу наклона;&lt;br /&gt;
* Запустить обход Грэхема для полуплоскостей, смотрящих вниз (с предикатом-определителем);&lt;br /&gt;
* Запустить обход Грэхема для полуплоскостей, смотрящих вверх;&lt;br /&gt;
* Пересечь две цепочки.&lt;br /&gt;
&lt;br /&gt;
От пересечения цепочек напрямую зависит фигура пересечения: неограниченная область получается если одна из цепочек пуста, а ограниченная {{---}} когда обе цепочки не пусты и пересекаются.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
* http://wwwisg.cs.uni-magdeburg.de/ag/lehre/SS2012/GAG/slides/V12.pdf&lt;br /&gt;
&lt;br /&gt;
[[Категория: Вычислительная геометрия]]&lt;/div&gt;</summary>
		<author><name>91.216.66.103</name></author>	</entry>

	</feed>