<?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=178.178.29.90&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=178.178.29.90&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/178.178.29.90"/>
		<updated>2026-04-12T20:12:24Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18374</id>
		<title>Упрощение полигональной цепи</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18374"/>
				<updated>2012-02-27T11:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;178.178.29.90: /* Пример */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппроксимированной серией точек.&lt;br /&gt;
==Задача==&lt;br /&gt;
Пусть у нас есть некоторая аппроксимированная кривая, все точки которой нам не нужны, а большинство из них лишь занимает место. Такое встречается при обработки векторной графики и построении карт. Расмотрим пример для построения карт. Пусть у нас есть путь из Москвы в Санкт-Петербург, заданный точками через каждый километр пути. В маштабах всей России такая точность явно ни к чему, стоит оставить лишь точки, отражающие ключевые участки пути. В этом случае нам и пригодится упрощение, одним из вариантов реализации которой является алгоритм Дугласа-Пекера.&lt;br /&gt;
==Алгоритм Дугласа-Пекера==&lt;br /&gt;
Суть алгоритма Дугласа-Пекера(Douglas–Peucker) состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми. Упрощенная кривая состоит из подмножества точек, которые определяются из исходной кривой.&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;
&amp;lt;tex&amp;gt;Douglas–Peucker(first, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Для всех точек между&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;и&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;last&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Если точка удалена дальше чем предыдущие запомнить ее в&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Если расстояние от&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;до отрезка&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first-last&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;меньше&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;eps&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Вернуться&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Иначе&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Добавить точку&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;в ответ&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;DouglasPeucker(first, max, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;DouglasPeucked(max, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;br /&gt;
Рассмотрим пример для точек, заданных на рисунке, где сплошная линия отражает исходную линию и епсилон равному &amp;lt;tex&amp;gt;\sqrt 2&amp;lt;/tex&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Шаг || Действие&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; || Найдем наиболее удаленную точку от отрезка &amp;lt;tex&amp;gt;1-5&amp;lt;/tex&amp;gt;, это точка &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; || Расстояние до точки &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; больше &amp;lt;tex&amp;gt;\sqrt 2&amp;lt;/tex&amp;gt;, добавляем ее в ответ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; || Запустим алгоритм для точек &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt; || Найдем наиболее удаленную точку от отрезка &amp;lt;tex&amp;gt;1-3&amp;lt;/tex&amp;gt;, это точка &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt; || Расстояние до точки &amp;lt;tex&amp;gt;2&amp;lt;/tex&amp;gt; меньше &amp;lt;tex&amp;gt;\sqrt 2&amp;lt;/tex&amp;gt;, возвращаемся&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;6&amp;lt;/tex&amp;gt; || Запустим алгоритм для точек &amp;lt;tex&amp;gt;3&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;5&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;7&amp;lt;/tex&amp;gt; || Найдем наиболее удаленную точку от отрезка &amp;lt;tex&amp;gt;3-5&amp;lt;/tex&amp;gt;, это точка &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;8&amp;lt;/tex&amp;gt; || Расстояние до точки &amp;lt;tex&amp;gt;4&amp;lt;/tex&amp;gt; меньше &amp;lt;tex&amp;gt;\sqrt 2&amp;lt;/tex&amp;gt;, возвращаемся&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tex&amp;gt;9&amp;lt;/tex&amp;gt; || Алгоритм завершен&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>178.178.29.90</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18373</id>
		<title>Упрощение полигональной цепи</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18373"/>
				<updated>2012-02-27T10:51:48Z</updated>
		
		<summary type="html">&lt;p&gt;178.178.29.90: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппроксимированной серией точек.&lt;br /&gt;
==Задача==&lt;br /&gt;
Пусть у нас есть некоторая аппроксимированная кривая, все точки которой нам не нужны, а большинство из них лишь занимает место. Такое встречается при обработки векторной графики и построении карт. Расмотрим пример для построения карт. Пусть у нас есть путь из Москвы в Санкт-Петербург, заданный точками через каждый километр пути. В маштабах всей России такая точность явно ни к чему, стоит оставить лишь точки, отражающие ключевые участки пути. В этом случае нам и пригодится упрощение, одним из вариантов реализации которой является алгоритм Дугласа-Пекера.&lt;br /&gt;
==Алгоритм Дугласа-Пекера==&lt;br /&gt;
Суть алгоритма Дугласа-Пекера(Douglas–Peucker) состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми. Упрощенная кривая состоит из подмножества точек, которые определяются из исходной кривой.&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;
&amp;lt;tex&amp;gt;Douglas–Peucker(first, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Для всех точек между&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;и&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;last&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Если точка удалена дальше чем предыдущие запомнить ее в&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Если расстояние от&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;до отрезка&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first-last&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;меньше&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;eps&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Вернуться&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Иначе&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Добавить точку&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;в ответ&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;DouglasPeucker(first, max, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;DouglasPeucked(max, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;/div&gt;</summary>
		<author><name>178.178.29.90</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18371</id>
		<title>Упрощение полигональной цепи</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18371"/>
				<updated>2012-02-27T10:43:40Z</updated>
		
		<summary type="html">&lt;p&gt;178.178.29.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппроксимированной серией точек.&lt;br /&gt;
==Задача==&lt;br /&gt;
Пусть у нас есть некоторая аппроксимированная кривая, все точки которой нам не нужны, а большинство из них лишь занимает место. Такое встречается при обработки векторной графики и построении карт. Расмотрим пример для построения карт. Пусть у нас есть путь из Москвы в Санкт-Петербург, заданный точками через каждый километр пути. В маштабах всей России такая точность явно ни к чему, стоит оставить лишь точки, отражающие ключевые участки пути. В этом случае нам и пригодится упрощение, одним из вариантов реализации которой является алгоритм Дугласа-Пекера.&lt;br /&gt;
==Алгоритм Дугласа-Пекера==&lt;br /&gt;
Суть алгоритма Дугласа-Пекера(Douglas–Peucker) состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми. Упрощенная кривая состоит из подмножества точек, которые определяются из исходной кривой.&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;
&amp;lt;tex&amp;gt;Douglas–Peucker(first, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Для всех точек между&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;и&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;last&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Если точка удалена дальше чем предыдущие запомнить ее в&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Если расстояние от&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;до отрезка&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first-last&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;меньше&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;eps&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Вернуться&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Иначе&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Добавить точку&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;в ответ&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucker(first, max, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucked(max, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Пример===&lt;/div&gt;</summary>
		<author><name>178.178.29.90</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18370</id>
		<title>Упрощение полигональной цепи</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18370"/>
				<updated>2012-02-27T10:43:24Z</updated>
		
		<summary type="html">&lt;p&gt;178.178.29.90: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппроксимированной серией точек.&lt;br /&gt;
==Задача==&lt;br /&gt;
Пусть у нас есть некоторая аппроксимированная кривая, все точки которой нам не нужны, а большинство из них лишь занимает место. Такое встречается при обработки векторной графики и построении карт. Расмотрим пример для построения карт. Пусть у нас есть путь из Москвы в Санкт-Петербург, заданный точками через каждый километр пути. В маштабах всей России такая точность явно ни к чему, стоит оставить лишь точки, отражающие ключевые участки пути. В этом случае нам и пригодится упрощение, одним из вариантов реализации которой является алгоритм Дугласа-Пекера.&lt;br /&gt;
==Алгоритм Дугласа-Пекера==&lt;br /&gt;
Суть алгоритма Дугласа-Пекера(Douglas–Peucker) состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми. Упрощенная кривая состоит из подмножества точек, которые определяются из исходной кривой.&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;
&amp;lt;tex&amp;gt;Douglas–Peucker(first, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Для всех точек между&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;и&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;last&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Если точка удалена дальше чем предыдущие запомнить ее в&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Если расстояние от&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;до отрезка&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first-last&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;меньше&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;eps&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Вернуться&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Иначе&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Добавить точку&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;в ответ&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucker(first, max, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucked(max, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;/div&gt;</summary>
		<author><name>178.178.29.90</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18369</id>
		<title>Упрощение полигональной цепи</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D0%BF%D1%80%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B8%D0%B3%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9_%D1%86%D0%B5%D0%BF%D0%B8&amp;diff=18369"/>
				<updated>2012-02-27T10:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;178.178.29.90: Новая страница: «Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппро...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Упрощение полигональной цепи - процесс, позволяющий уменьшить число точек кривой, аппроксимированной серией точек.&lt;br /&gt;
==Задача==&lt;br /&gt;
Пусть у нас есть некоторая аппроксимированная кривая, все точки которой нам не нужны, а большинство из них лишь занимает место. Такое встречается при обработки векторной графики и построении карт. Расмотрим пример для построения карт. Пусть у нас путь из Москвы в Санкт-Петербург, заданный точками через каждый километр пути. В маштабах всей России такая точность явно ни к чему, стоит оставить лишь точки, отражающие ключевые участки пути. В этом случае нам и пригодится упрощение, одним из вариантов реализации которой является алгоритм Дугласа-Пекера.&lt;br /&gt;
==Алгоритм Дугласа-Пекера==&lt;br /&gt;
Суть алгоритма Дугласа-Пекера(Douglas–Peucker) состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощённой кривыми. Упрощенная кривая состоит из подмножества точек, которые определяются из исходной кривой.&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;
&amp;lt;tex&amp;gt;Douglas–Peucker(first, last, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Для всех точек между&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;и&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;last&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Если точка удалена дальше чем предыдущие запомнить ее в&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Если расстояние от&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;до отрезка&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;first-last&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;меньше&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;eps&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Вернуться&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;Иначе&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt;Добавить точку&amp;lt;/code&amp;gt; &amp;lt;tex&amp;gt;max&amp;lt;/tex&amp;gt; &amp;lt;code&amp;gt;в ответ&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucker(first, max, eps)&amp;lt;/tex&amp;gt;&lt;br /&gt;
::&amp;lt;tex&amp;gt;Douglas-Peucked(max, last, eps)&amp;lt;/tex&amp;gt;&lt;/div&gt;</summary>
		<author><name>178.178.29.90</name></author>	</entry>

	</feed>