<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Processing%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2F%D0%A1%D1%82%D0%B0%D1%8F</id>
	<title>Processing:Примеры/Стая - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Processing%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2F%D0%A1%D1%82%D0%B0%D1%8F"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;action=history"/>
	<updated>2026-04-16T08:26:29Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=10359346&amp;oldid=prev</id>
		<title>Myagkij в 03:59, 27 августа 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=10359346&amp;oldid=prev"/>
		<updated>2023-08-27T03:59:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 07:59, 27 августа 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Processing панель перехода}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Processing панель перехода}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Перевод от Сubewriter}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Перевод от Сubewriter}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myagkij-редактор}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myagkij-редактор}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Описание&amp;lt;ref&amp;gt;[https://processing.org/examples/flocking.html processing.org - Flocking by Daniel Shiffman. ]&amp;lt;/ref&amp;gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Описание&amp;lt;ref&amp;gt;[https://processing.org/examples/flocking.html processing.org - Flocking by Daniel Shiffman. ]&amp;lt;/ref&amp;gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l533&quot;&gt;Строка 533:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 530:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{SEO&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Заголовок статьи=Processing: Стая / Онлайн справочник - wikihandbk.com&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Ключевые слова=processing,Стая в processing, пример Стая, пример Стая в ArrayList в processing&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Описание статьи=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Изображение статьи для Open Graph=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Адрес страницы для schemaNewsArticle=&amp;lt;nowiki&gt;http://wikihandbk.com/wiki/Processing:Примеры/Стая&amp;lt;/nowiki&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Изображение статьи для schemaNewsArticle=&amp;lt;nowiki&gt;&amp;lt;/nowiki&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Высота изображения статьи для schemaNewsArticle=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Ширина изображения статьи для schemaNewsArticle=&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Дата публикации для schemaNewsArticle=2018-08-03&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Автор=Мякишев Е.А.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Издатель=myagkij&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Логотип издателя для schemaNewsArticle=&amp;lt;nowiki&gt;http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg&amp;lt;/nowiki&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Ширина логотипа издателя для schemaNewsArticle=60&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Высота логотипа издателя для schemaNewsArticle=45&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Портал/Processing}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Портал/Processing}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=7734917&amp;oldid=prev</id>
		<title>EducationBot в 08:01, 20 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=7734917&amp;oldid=prev"/>
		<updated>2023-05-20T08:01:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:01, 20 мая 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot;&gt;Строка 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myagkij-редактор}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Myagkij-редактор}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Черновик}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Описание&amp;lt;ref&amp;gt;[https://processing.org/examples/flocking.html processing.org - Flocking by Daniel Shiffman. ]&amp;lt;/ref&amp;gt;=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Описание&amp;lt;ref&amp;gt;[https://processing.org/examples/flocking.html processing.org - Flocking by Daniel Shiffman. ]&amp;lt;/ref&amp;gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l250&quot;&gt;Строка 250:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 250:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; enclose=&quot;div&lt;/del&gt;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Flock flock;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Flock flock;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l549&quot;&gt;Строка 549:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 549:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|Высота логотипа издателя для schemaNewsArticle=45&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|Высота логотипа издателя для schemaNewsArticle=45&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Справочник языка Processing}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Портал&lt;/ins&gt;/Processing}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица&lt;/del&gt;/Processing&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/Примеры}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Телепорт&lt;/del&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=2298671&amp;oldid=prev</id>
		<title>Myagkij: /* Внешние ссылки */</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=2298671&amp;oldid=prev"/>
		<updated>2022-05-07T04:21:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Внешние ссылки&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:21, 7 мая 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l551&quot;&gt;Строка 551:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 551:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Справочник языка Processing}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Справочник языка Processing}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Processing/Примеры}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Навигационная таблица/Processing/Примеры}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Телепорт}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=38248&amp;oldid=prev</id>
		<title>Myagkij в 15:38, 3 августа 2018</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Processing:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A1%D1%82%D0%B0%D1%8F&amp;diff=38248&amp;oldid=prev"/>
		<updated>2018-08-03T15:38:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Processing панель перехода}}&lt;br /&gt;
&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
{{Черновик}}&lt;br /&gt;
&lt;br /&gt;
=Описание&amp;lt;ref&amp;gt;[https://processing.org/examples/flocking.html processing.org - Flocking by Daniel Shiffman. ]&amp;lt;/ref&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Реализация в Processing программы Крейга Рейнольдса «Boids», симулирующей стайное поведение птиц. Поведение каждой «птицы» регулируется 3 правилами – уклонения, выравнивания и целостности. &lt;br /&gt;
&lt;br /&gt;
Кликните мышкой по экрану, чтобы добавить новую «птицу».&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
{{5pjs&lt;br /&gt;
|Код=&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
 /**&lt;br /&gt;
 * Flocking &lt;br /&gt;
 * by Daniel Shiffman.  &lt;br /&gt;
 * &lt;br /&gt;
 * An implementation of Craig Reynold's Boids program to simulate&lt;br /&gt;
 * the flocking behavior of birds. Each boid steers itself based on &lt;br /&gt;
 * rules of avoidance, alignment, and coherence.&lt;br /&gt;
 * &lt;br /&gt;
 * Click the mouse to add a new boid.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
var flock;&lt;br /&gt;
&lt;br /&gt;
function setup() {&lt;br /&gt;
  var canvas = createCanvas(640, 360);&lt;br /&gt;
  canvas.parent(&amp;quot;p5container&amp;quot;);&lt;br /&gt;
  flock = new Flock();&lt;br /&gt;
  // Add an initial set of boids into the system&lt;br /&gt;
  for (var i = 0; i &amp;lt; 150; i++) {&lt;br /&gt;
    flock.addBoid(new Boid(width/2,height/2));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function draw() {&lt;br /&gt;
  background(50);&lt;br /&gt;
  flock.run();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add a new boid into the System&lt;br /&gt;
function mousePressed() {&lt;br /&gt;
  flock.addBoid(new Boid(mouseX,mouseY));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// The Nature of Code&lt;br /&gt;
// Daniel Shiffman&lt;br /&gt;
// http://natureofcode.com&lt;br /&gt;
&lt;br /&gt;
// Boid class&lt;br /&gt;
// Methods for Separation, Cohesion, Alignment added&lt;br /&gt;
&lt;br /&gt;
function Boid(x,y) {&lt;br /&gt;
  this.acceleration = createVector(0,0);&lt;br /&gt;
  this.velocity = createVector(random(-1,1),random(-1,1));&lt;br /&gt;
  this.position = createVector(x,y);&lt;br /&gt;
  this.r = 2.0;&lt;br /&gt;
  this.maxspeed = 2;    // Maximum speed&lt;br /&gt;
  this.maxforce = 0.03; // Maximum steering force&lt;br /&gt;
&lt;br /&gt;
  this.run = function(boids) {&lt;br /&gt;
    this.flock(boids);&lt;br /&gt;
    this.update();&lt;br /&gt;
    this.borders();&lt;br /&gt;
    this.render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  this.applyForce = function(force) {&lt;br /&gt;
    // We could add mass here if we want A = F / M&lt;br /&gt;
    this.acceleration.add(force);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // We accumulate a new acceleration each time based on three rules&lt;br /&gt;
  this.flock = function(boids) {&lt;br /&gt;
    var sep = this.separate(boids);   // Separation&lt;br /&gt;
    var ali = this.align(boids);      // Alignment&lt;br /&gt;
    var coh = this.cohesion(boids);   // Cohesion&lt;br /&gt;
    // Arbitrarily weight these forces&lt;br /&gt;
    sep.mult(1.5);&lt;br /&gt;
    ali.mult(1.0);&lt;br /&gt;
    coh.mult(1.0);&lt;br /&gt;
    // Add the force vectors to acceleration&lt;br /&gt;
    this.applyForce(sep);&lt;br /&gt;
    this.applyForce(ali);&lt;br /&gt;
    this.applyForce(coh);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Method to update location&lt;br /&gt;
  this.update = function() {&lt;br /&gt;
    // Update velocity&lt;br /&gt;
    this.velocity.add(this.acceleration);&lt;br /&gt;
    // Limit speed&lt;br /&gt;
    this.velocity.limit(this.maxspeed);&lt;br /&gt;
    this.position.add(this.velocity);&lt;br /&gt;
    // Reset accelertion to 0 each cycle&lt;br /&gt;
    this.acceleration.mult(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // A method that calculates and applies a steering force towards a target&lt;br /&gt;
  // STEER = DESIRED MINUS VELOCITY&lt;br /&gt;
  this.seek = function(target) {&lt;br /&gt;
    var desired = p5.Vector.sub(target,this.position);  // A vector pointing from the location to the target&lt;br /&gt;
    // Normalize desired and scale to maximum speed&lt;br /&gt;
    desired.normalize();&lt;br /&gt;
    desired.mult(this.maxspeed);&lt;br /&gt;
    // Steering = Desired minus Velocity&lt;br /&gt;
    var steer = p5.Vector.sub(desired,this.velocity);&lt;br /&gt;
    steer.limit(this.maxforce);  // Limit to maximum steering force&lt;br /&gt;
    return steer;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  this.render = function() {&lt;br /&gt;
    // Draw a triangle rotated in the direction of velocity&lt;br /&gt;
    var theta = this.velocity.heading() + radians(90);&lt;br /&gt;
    fill(200,100);&lt;br /&gt;
    stroke(255);&lt;br /&gt;
    push();&lt;br /&gt;
    translate(this.position.x,this.position.y);&lt;br /&gt;
    rotate(theta);&lt;br /&gt;
    beginShape();&lt;br /&gt;
    vertex(0, -this.r*2);&lt;br /&gt;
    vertex(-this.r, this.r*2);&lt;br /&gt;
    vertex(this.r, this.r*2);&lt;br /&gt;
    endShape(CLOSE);&lt;br /&gt;
    pop();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Wraparound&lt;br /&gt;
  this.borders = function() {&lt;br /&gt;
    if (this.position.x &amp;lt; -this.r)  this.position.x = width +this.r;&lt;br /&gt;
    if (this.position.y &amp;lt; -this.r)  this.position.y = height+this.r;&lt;br /&gt;
    if (this.position.x &amp;gt; width +this.r) this.position.x = -this.r;&lt;br /&gt;
    if (this.position.y &amp;gt; height+this.r) this.position.y = -this.r;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Separation&lt;br /&gt;
  // Method checks for nearby boids and steers away&lt;br /&gt;
  this.separate = function(boids) {&lt;br /&gt;
    var desiredseparation = 25.0;&lt;br /&gt;
    var steer = createVector(0,0);&lt;br /&gt;
    var count = 0;&lt;br /&gt;
    // For every boid in the system, check if it's too close&lt;br /&gt;
    for (var i = 0; i &amp;lt; boids.length; i++) {&lt;br /&gt;
      var d = p5.Vector.dist(this.position,boids[i].position);&lt;br /&gt;
      // If the distance is greater than 0 and less than an arbitrary amount (0 when you are yourself)&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; desiredseparation)) {&lt;br /&gt;
        // Calculate vector pointing away from neighbor&lt;br /&gt;
        var diff = p5.Vector.sub(this.position,boids[i].position);&lt;br /&gt;
        diff.normalize();&lt;br /&gt;
        diff.div(d);        // Weight by distance&lt;br /&gt;
        steer.add(diff);&lt;br /&gt;
        count++;            // Keep track of how many&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Average -- divide by how many&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      steer.div(count);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // As long as the vector is greater than 0&lt;br /&gt;
    if (steer.mag() &amp;gt; 0) {&lt;br /&gt;
      // Implement Reynolds: Steering = Desired - Velocity&lt;br /&gt;
      steer.normalize();&lt;br /&gt;
      steer.mult(this.maxspeed);&lt;br /&gt;
      steer.sub(this.velocity);&lt;br /&gt;
      steer.limit(this.maxforce);&lt;br /&gt;
    }&lt;br /&gt;
    return steer;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Alignment&lt;br /&gt;
  // For every nearby boid in the system, calculate the average velocity&lt;br /&gt;
  this.align = function(boids) {&lt;br /&gt;
    var neighbordist = 50;&lt;br /&gt;
    var sum = createVector(0,0);&lt;br /&gt;
    var count = 0;&lt;br /&gt;
    for (var i = 0; i &amp;lt; boids.length; i++) {&lt;br /&gt;
      var d = p5.Vector.dist(this.position,boids[i].position);&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; neighbordist)) {&lt;br /&gt;
        sum.add(boids[i].velocity);&lt;br /&gt;
        count++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      sum.div(count);&lt;br /&gt;
      sum.normalize();&lt;br /&gt;
      sum.mult(this.maxspeed);&lt;br /&gt;
      var steer = p5.Vector.sub(sum,this.velocity);&lt;br /&gt;
      steer.limit(this.maxforce);&lt;br /&gt;
      return steer;&lt;br /&gt;
    } else {&lt;br /&gt;
      return createVector(0,0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Cohesion&lt;br /&gt;
  // For the average location (i.e. center) of all nearby boids, calculate steering vector towards that location&lt;br /&gt;
  this.cohesion = function(boids) {&lt;br /&gt;
    var neighbordist = 50;&lt;br /&gt;
    var sum = createVector(0,0);   // Start with empty vector to accumulate all locations&lt;br /&gt;
    var count = 0;&lt;br /&gt;
    for (var i = 0; i &amp;lt; boids.length; i++) {&lt;br /&gt;
      var d = p5.Vector.dist(this.position,boids[i].position);&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; neighbordist)) {&lt;br /&gt;
        sum.add(boids[i].position); // Add location&lt;br /&gt;
        count++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      sum.div(count);&lt;br /&gt;
      return this.seek(sum);  // Steer towards the location&lt;br /&gt;
    } else {&lt;br /&gt;
      return createVector(0,0);&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;
// The Flock (a list of Boid objects)&lt;br /&gt;
&lt;br /&gt;
function Flock() {&lt;br /&gt;
  // An array for all the boids&lt;br /&gt;
  this.boids = []; // Initialize the array&lt;br /&gt;
&lt;br /&gt;
  this.run = function() {&lt;br /&gt;
    for (var i = 0; i &amp;lt; this.boids.length; i++) {&lt;br /&gt;
      this.boids[i].run(this.boids);  // Passing the entire list of boids to each boid individually&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  this.addBoid = function(b) {&lt;br /&gt;
    this.boids.push(b);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Flock flock;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  size(640, 360);&lt;br /&gt;
  flock = new Flock();&lt;br /&gt;
  // добавляем в систему начальную стаю «птиц»:&lt;br /&gt;
  for (int i = 0; i &amp;lt; 150; i++) {&lt;br /&gt;
    flock.addBoid(new Boid(width/2,height/2));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void draw() {&lt;br /&gt;
  background(50);&lt;br /&gt;
  flock.run();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// добавляем в систему новую «птицу»:&lt;br /&gt;
void mousePressed() {&lt;br /&gt;
  flock.addBoid(new Boid(mouseX,mouseY));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// объект «Flock» (список объектов «Boid»)&lt;br /&gt;
&lt;br /&gt;
class Flock {&lt;br /&gt;
  ArrayList&amp;lt;Boid&amp;gt; boids; // объект ArrayList для хранения всех «птиц»&lt;br /&gt;
&lt;br /&gt;
  Flock() {&lt;br /&gt;
    boids = new ArrayList&amp;lt;Boid&amp;gt;(); // инициализируем «boids»&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void run() {&lt;br /&gt;
    for (Boid b : boids) {&lt;br /&gt;
      b.run(boids);  // прогоняем все объекты «Boid» &lt;br /&gt;
                     // в списке «boids» друг через друга &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void addBoid(Boid b) {&lt;br /&gt;
    boids.add(b);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// класс «Boid»&lt;br /&gt;
&lt;br /&gt;
class Boid {&lt;br /&gt;
&lt;br /&gt;
  PVector position;&lt;br /&gt;
  PVector velocity;&lt;br /&gt;
  PVector acceleration;&lt;br /&gt;
  float r;&lt;br /&gt;
  float maxforce;    // максимальная сила поворота&lt;br /&gt;
  float maxspeed;    // максимальная скорость&lt;br /&gt;
&lt;br /&gt;
    Boid(float x, float y) {&lt;br /&gt;
    acceleration = new PVector(0, 0);&lt;br /&gt;
&lt;br /&gt;
    // это новый метод для объекта «PVector»,&lt;br /&gt;
    // еще не добавленный в JavaScript:&lt;br /&gt;
    // velocity = PVector.random2D();&lt;br /&gt;
&lt;br /&gt;
    // временно воспользуемся этим кодом,&lt;br /&gt;
    // чтобы этот скетч можно было запустить в JavaScript:&lt;br /&gt;
    float angle = random(TWO_PI);&lt;br /&gt;
    velocity = new PVector(cos(angle), sin(angle));&lt;br /&gt;
&lt;br /&gt;
    position = new PVector(x, y);&lt;br /&gt;
    r = 2.0;&lt;br /&gt;
    maxspeed = 2;&lt;br /&gt;
    maxforce = 0.03;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void run(ArrayList&amp;lt;Boid&amp;gt; boids) {&lt;br /&gt;
    flock(boids);&lt;br /&gt;
    update();&lt;br /&gt;
    borders();&lt;br /&gt;
    render();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void applyForce(PVector force) {&lt;br /&gt;
    // здесь, если необходимо, можно добавить массу (A = F / M): &lt;br /&gt;
    acceleration.add(force);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // рассчитываем ускорение на основе 3 правил:&lt;br /&gt;
  void flock(ArrayList&amp;lt;Boid&amp;gt; boids) {&lt;br /&gt;
    PVector sep = separate(boids);   // уклонение&lt;br /&gt;
    PVector ali = align(boids);      // выравнивание&lt;br /&gt;
    PVector coh = cohesion(boids);   // целостность&lt;br /&gt;
    // задаем всем этим силам некоторые значения:&lt;br /&gt;
    sep.mult(1.5);&lt;br /&gt;
    ali.mult(1.0);&lt;br /&gt;
    coh.mult(1.0);&lt;br /&gt;
    // применяем к ускорению все три вектора силы:&lt;br /&gt;
    applyForce(sep);&lt;br /&gt;
    applyForce(ali);&lt;br /&gt;
    applyForce(coh);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // функция для обновления данных о позиции:&lt;br /&gt;
  void update() {&lt;br /&gt;
    // обновляем скорость:&lt;br /&gt;
    velocity.add(acceleration);&lt;br /&gt;
    // ограничиваем скорость:&lt;br /&gt;
    velocity.limit(maxspeed);&lt;br /&gt;
    position.add(velocity);&lt;br /&gt;
    // на каждом цикле сбрасываем скорость до «0»:&lt;br /&gt;
    acceleration.mult(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // функция для расчета и применения силы поворота в сторону цели&lt;br /&gt;
  // (сила поворота = вектор «desired» - вектор «velocity»):&lt;br /&gt;
  PVector seek(PVector target) {&lt;br /&gt;
    // вектор, указывающий от позиции к цели: &lt;br /&gt;
    PVector desired = PVector.sub(target, position);&lt;br /&gt;
    // масштабируем «desired» к максимальной скорости:&lt;br /&gt;
    desired.normalize();&lt;br /&gt;
    desired.mult(maxspeed);&lt;br /&gt;
&lt;br /&gt;
    // две строчки выше можно сократить с помощью&lt;br /&gt;
    // нового метода setMag() для объекта PVector,&lt;br /&gt;
    // но мы не будем его использовать,&lt;br /&gt;
    // пока его не начнет поддерживать Processing.js:&lt;br /&gt;
    // desired.setMag(maxspeed);&lt;br /&gt;
&lt;br /&gt;
    // сила поворота = вектор «desired» - вектор «velocity»:&lt;br /&gt;
    PVector steer = PVector.sub(desired, velocity);&lt;br /&gt;
    steer.limit(maxforce);  // ограничиваем до&lt;br /&gt;
                            // максимальной силы поворота:&lt;br /&gt;
    return steer;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void render() {&lt;br /&gt;
    // рисуем треугольник, поворачивающийся&lt;br /&gt;
    // в направлении вектора «velocity»:&lt;br /&gt;
    float theta = velocity.heading2D() + radians(90);&lt;br /&gt;
    // метод heading2D() выше – это теперь heading(),&lt;br /&gt;
    // но я решил оставить старый синтаксис,&lt;br /&gt;
    // пока Processing.js не начнет поддерживать новый&lt;br /&gt;
    &lt;br /&gt;
    fill(200, 100);&lt;br /&gt;
    stroke(255);&lt;br /&gt;
    pushMatrix();&lt;br /&gt;
    translate(position.x, position.y);&lt;br /&gt;
    rotate(theta);&lt;br /&gt;
    beginShape(TRIANGLES);&lt;br /&gt;
    vertex(0, -r*2);&lt;br /&gt;
    vertex(-r, r*2);&lt;br /&gt;
    vertex(r, r*2);&lt;br /&gt;
    endShape();&lt;br /&gt;
    popMatrix();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // делаем так, чтобы «птицы», вылетая за пределы экрана,&lt;br /&gt;
  // появлялись в противоположной части экрана:&lt;br /&gt;
  void borders() {&lt;br /&gt;
    if (position.x &amp;lt; -r) position.x = width+r;&lt;br /&gt;
    if (position.y &amp;lt; -r) position.y = height+r;&lt;br /&gt;
    if (position.x &amp;gt; width+r) position.x = -r;&lt;br /&gt;
    if (position.y &amp;gt; height+r) position.y = -r;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Правило уклонения.&lt;br /&gt;
  // Эта функция проверяет, есть ли рядом другие «птицы»,&lt;br /&gt;
  // и если есть, то заставляет «птицу» уклониться от соседа:&lt;br /&gt;
  PVector separate (ArrayList&amp;lt;Boid&amp;gt; boids) {&lt;br /&gt;
    float desiredseparation = 25.0f;&lt;br /&gt;
    PVector steer = new PVector(0, 0, 0);&lt;br /&gt;
    int count = 0;&lt;br /&gt;
    // проверяем каждую «птицу» в системе на предмет того,&lt;br /&gt;
    // находится ли она близко к другой «птице»:&lt;br /&gt;
    for (Boid other : boids) {&lt;br /&gt;
      float d = PVector.dist(position, other.position);&lt;br /&gt;
      // если дистанция больше «0» (это сама «птица»)&lt;br /&gt;
      // и меньше значения в «desiredseparation»...&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; desiredseparation)) {&lt;br /&gt;
        // рассчитываем вектор для уклонения от соседа:&lt;br /&gt;
        PVector diff = PVector.sub(position, other.position);&lt;br /&gt;
        diff.normalize();&lt;br /&gt;
        diff.div(d);        // подгоняем к дистанции между «птицами»&lt;br /&gt;
        steer.add(diff);&lt;br /&gt;
        count++;            // отслеживаем, сколько раз&lt;br /&gt;
                            // выполнялось это условие &lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Среднее значение – делим на то,&lt;br /&gt;
    // сколько раз выполнялось это условие:&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      steer.div((float)count);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // если длина вектора больше «0»...&lt;br /&gt;
    if (steer.mag() &amp;gt; 0) {&lt;br /&gt;
      // первые две строчки кода ниже &lt;br /&gt;
      // можно заменить на новый метод setMag() для PVector;&lt;br /&gt;
      // здесь мы его использовать не будем,&lt;br /&gt;
      // пока его не начнет поддерживать Processing.js:&lt;br /&gt;
      // steer.setMag(maxspeed);&lt;br /&gt;
&lt;br /&gt;
      // используем правило Рейнольдса:&lt;br /&gt;
      // (сила поворота = вектор «desired» - вектор «velocity»):&lt;br /&gt;
      steer.normalize();&lt;br /&gt;
      steer.mult(maxspeed);&lt;br /&gt;
      steer.sub(velocity);&lt;br /&gt;
      steer.limit(maxforce);&lt;br /&gt;
    }&lt;br /&gt;
    return steer;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Правило выравнивания.&lt;br /&gt;
  // Рассчитываем среднюю скорость&lt;br /&gt;
  // для каждой соседней «птицы» в системе:&lt;br /&gt;
  PVector align (ArrayList&amp;lt;Boid&amp;gt; boids) {&lt;br /&gt;
    float neighbordist = 50;&lt;br /&gt;
    PVector sum = new PVector(0, 0);&lt;br /&gt;
    int count = 0;&lt;br /&gt;
    for (Boid other : boids) {&lt;br /&gt;
      float d = PVector.dist(position, other.position);&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; neighbordist)) {&lt;br /&gt;
        sum.add(other.velocity);&lt;br /&gt;
        count++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      sum.div((float)count);&lt;br /&gt;
      // первые две строчки кода ниже &lt;br /&gt;
      // можно заменить на новый метод setMag() для PVector;&lt;br /&gt;
      // здесь мы его использовать не будем,&lt;br /&gt;
      // пока его не начнет поддерживать Processing.js:&lt;br /&gt;
      // sum.setMag(maxspeed);&lt;br /&gt;
&lt;br /&gt;
      // используем правило Рейнольдса:&lt;br /&gt;
      // (сила поворота = вектор «desired» - вектор «velocity»): &lt;br /&gt;
      sum.normalize();&lt;br /&gt;
      sum.mult(maxspeed);&lt;br /&gt;
      PVector steer = PVector.sub(sum, velocity);&lt;br /&gt;
      steer.limit(maxforce);&lt;br /&gt;
      return steer;&lt;br /&gt;
    } &lt;br /&gt;
    else {&lt;br /&gt;
      return new PVector(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Правило целостности.&lt;br /&gt;
  // Рассчитываем вектор поворота&lt;br /&gt;
  // в сторону средней (то есть центральной) позиции&lt;br /&gt;
  // всех соседних «птиц»:&lt;br /&gt;
  PVector cohesion (ArrayList&amp;lt;Boid&amp;gt; boids) {&lt;br /&gt;
    float neighbordist = 50;&lt;br /&gt;
    PVector sum = new PVector(0, 0);   // начинаем с пустого вектора&lt;br /&gt;
                                       // для сложения всех позиций&lt;br /&gt;
    int count = 0;&lt;br /&gt;
    for (Boid other : boids) {&lt;br /&gt;
      float d = PVector.dist(position, other.position);&lt;br /&gt;
      if ((d &amp;gt; 0) &amp;amp;&amp;amp; (d &amp;lt; neighbordist)) {&lt;br /&gt;
        sum.add(other.position); // добавляем позицию&lt;br /&gt;
        count++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    if (count &amp;gt; 0) {&lt;br /&gt;
      sum.div(count);&lt;br /&gt;
      return seek(sum);  // поворачиваем в сторону позиции&lt;br /&gt;
    } &lt;br /&gt;
    else {&lt;br /&gt;
      return new PVector(0, 0);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=См.также=&lt;br /&gt;
&lt;br /&gt;
=Внешние ссылки=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SEO&lt;br /&gt;
|Заголовок статьи=Processing: Стая / Онлайн справочник - wikihandbk.com&lt;br /&gt;
|Ключевые слова=processing,Стая в processing, пример Стая, пример Стая в ArrayList в processing&lt;br /&gt;
|Описание статьи=&lt;br /&gt;
|Изображение статьи для Open Graph=&lt;br /&gt;
|Адрес страницы для schemaNewsArticle=&amp;lt;nowiki&amp;gt;http://wikihandbk.com/wiki/Processing:Примеры/Стая&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Изображение статьи для schemaNewsArticle=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Высота изображения статьи для schemaNewsArticle=&lt;br /&gt;
|Ширина изображения статьи для schemaNewsArticle=&lt;br /&gt;
|Дата публикации для schemaNewsArticle=2018-08-03&lt;br /&gt;
|Автор=Мякишев Е.А.&lt;br /&gt;
|Издатель=myagkij&lt;br /&gt;
|Логотип издателя для schemaNewsArticle=&amp;lt;nowiki&amp;gt;http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Ширина логотипа издателя для schemaNewsArticle=60&lt;br /&gt;
|Высота логотипа издателя для schemaNewsArticle=45&lt;br /&gt;
}}&lt;br /&gt;
{{Навигационная таблица/Справочник языка Processing}}&lt;br /&gt;
{{Навигационная таблица/Processing/Примеры}}&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>