<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://apmath.info/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5</id>
	<title>Представление линии в квадратном растре - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://apmath.info/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5"/>
	<link rel="alternate" type="text/html" href="https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;action=history"/>
	<updated>2026-05-06T15:02:12Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=182&amp;oldid=prev</id>
		<title>Nadya.cats: /* Код */</title>
		<link rel="alternate" type="text/html" href="https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=182&amp;oldid=prev"/>
		<updated>2022-10-31T19:26:49Z</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;Версия 19:26, 31 октября 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-l14&quot;&gt;Строка 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 14:&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;div&gt;&amp;lt;br&amp;gt;1. Создаем переменные d, dx, dy, где&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;br&amp;gt;1. Создаем переменные d, dx, dy, где&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;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;d&amp;lt;/b&amp;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;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;d&amp;lt;/b&amp;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;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;br&amp;gt;&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt; - координата первого &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксела &lt;/del&gt;по оси x.&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;br&amp;gt;&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt; - координата первого &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пикселя &lt;/ins&gt;по оси x.&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;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt; - координата первого &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксела &lt;/del&gt;по оси y.&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;br&amp;gt;&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt; - координата первого &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пикселя &lt;/ins&gt;по оси y.&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;br&amp;gt;2. Заходим в цикл, в котором движемся по x до момента, пока не дойдем до конца отрезка. Мы предполагаем, что координата конца больше координаты начала по x. Если же наоборот, то можно поменять их местами.&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;br&amp;gt;2. Заходим в цикл, в котором движемся по x до момента, пока не дойдем до конца отрезка. Мы предполагаем, что координата конца больше координаты начала по x. Если же наоборот, то можно поменять их местами.&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;&amp;lt;br&amp;gt;3. Закрашиваем &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;&amp;lt;br&amp;gt;3. Закрашиваем &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;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;br&amp;gt;4. Изменяем величину d, чтобы показать пересечение стенки отрезком в данном пикселе.  &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;br&amp;gt;4. Изменяем величину d, чтобы показать пересечение стенки отрезком в данном пикселе.  &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;&amp;lt;br&amp;gt;4.1. Если у нас d ≥ 0, то увеличиваем y(то есть поднимаемся вверх).&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;br&amp;gt;4.1. Если у нас d ≥ 0, то увеличиваем y(то есть поднимаемся вверх).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key apmath_info_db-w:diff::1.12:old-181:rev-182 --&gt;
&lt;/table&gt;</summary>
		<author><name>Nadya.cats</name></author>
	</entry>
	<entry>
		<id>https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=181&amp;oldid=prev</id>
		<title>Nadya.cats: /* Алгоритм */</title>
		<link rel="alternate" type="text/html" href="https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=181&amp;oldid=prev"/>
		<updated>2022-10-31T14:56:56Z</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;Версия 14:56, 31 октября 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-l5&quot;&gt;Строка 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 5:&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;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;отрезка &lt;/del&gt;может быть любым. Обозначим &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;его &lt;/del&gt;за &amp;lt;math&amp;gt;\alpha&amp;lt;/math&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;По условию нам даны начало и конец отрезка. Угол &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;его &lt;/ins&gt;поворота может быть любым. Обозначим за &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;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;Давайте рассмотрим случай, где &amp;lt;math&amp;gt;\alpha = \frac{\pi}{4}&amp;lt;/math&amp;gt;:&amp;lt;br&amp;gt;Закрасим первый &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксел&lt;/del&gt;. Если бы мы строили отрезок в реальной жизни, то он бы пересекал стенки клеток в разных местах. Будем опираться на этот факт и скажем, что если отрезок пересекает стенку клетки ниже середины, то мы остаемся на той же строке и закрашиваем соседнюю клетку(соседний &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксел&lt;/del&gt;). Если же отрезок пересекает стенку клетки выше половины, то сдвигаемся вправо, а потом вверх(т.е. по диагонали) и закрашиваем этот &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксел&lt;/del&gt;. &amp;lt;br&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;math&amp;gt;\alpha = \frac{\pi}{4}&amp;lt;/math&amp;gt;:&amp;lt;br&amp;gt;Закрасим первый &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксель&lt;/ins&gt;. Если бы мы строили отрезок в реальной жизни, то он бы пересекал стенки клеток в разных местах. Будем опираться на этот факт и скажем, что если отрезок пересекает стенку клетки ниже середины, то мы остаемся на той же строке и закрашиваем соседнюю клетку(соседний &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксель&lt;/ins&gt;). Если же отрезок пересекает стенку клетки выше половины, то сдвигаемся вправо, а потом вверх(т.е. по диагонали) и закрашиваем этот &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;пиксель&lt;/ins&gt;. &amp;lt;br&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;Обозначим разность координаты конца и координаты начала по оси x - &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;. Соответственно по оси y - &amp;lt;b&amp;gt;dy&amp;lt;/b&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;Обозначим разность координаты конца и координаты начала по оси x - &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;. Соответственно по оси y - &amp;lt;b&amp;gt;dy&amp;lt;/b&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;&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;math&amp;gt;\alpha = 45^{\circ}&amp;lt;/math&amp;gt; заметим, что всегда должно выполняться условие &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt; ≥ &amp;lt;b&amp;gt;dy&amp;lt;/b&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;math&amp;gt;\alpha = 45^{\circ}&amp;lt;/math&amp;gt; заметим, что всегда должно выполняться условие &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt; ≥ &amp;lt;b&amp;gt;dy&amp;lt;/b&amp;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;/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 colspan=&quot;2&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;/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;&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;br&amp;gt;1. Создаем переменные d, dx, dy, где&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;br&amp;gt;1. Создаем переменные d, dx, dy, где&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key apmath_info_db-w:diff::1.12:old-180:rev-181 --&gt;
&lt;/table&gt;</summary>
		<author><name>Nadya.cats</name></author>
	</entry>
	<entry>
		<id>https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=180&amp;oldid=prev</id>
		<title>T.o.r.t.i.k1: Новая страница: «== Алгоритм Брезенхема == Алгоритм Брезенхема - алгоритм, который позволяет построить пря...»</title>
		<link rel="alternate" type="text/html" href="https://apmath.info/w/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BB%D0%B8%D0%BD%D0%B8%D0%B8_%D0%B2_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%BC_%D1%80%D0%B0%D1%81%D1%82%D1%80%D0%B5&amp;diff=180&amp;oldid=prev"/>
		<updated>2022-10-30T21:01:52Z</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;== Алгоритм Брезенхема ==&lt;br /&gt;
Алгоритм Брезенхема - алгоритм, который позволяет построить прямую на мониторе, независимо от угла наклона прямой. Это эффективный метод, поскольку он включает в себя только целочисленные операции сложения, вычитания и умножения. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Мы работаем с отрезками(экран компьютера не может быть бесконечным). &lt;br /&gt;
По условию нам даны начало и конец отрезка. Угол поворота отрезка может быть любым. Обозначим его за &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;. &lt;br /&gt;
Давайте рассмотрим случай, где &amp;lt;math&amp;gt;\alpha = \frac{\pi}{4}&amp;lt;/math&amp;gt;:&amp;lt;br&amp;gt;Закрасим первый пиксел. Если бы мы строили отрезок в реальной жизни, то он бы пересекал стенки клеток в разных местах. Будем опираться на этот факт и скажем, что если отрезок пересекает стенку клетки ниже середины, то мы остаемся на той же строке и закрашиваем соседнюю клетку(соседний пиксел). Если же отрезок пересекает стенку клетки выше половины, то сдвигаемся вправо, а потом вверх(т.е. по диагонали) и закрашиваем этот пиксел. &amp;lt;br&amp;gt;&lt;br /&gt;
Обозначим разность координаты конца и координаты начала по оси x - &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt;. Соответственно по оси y - &amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как мы работаем с углом &amp;lt;math&amp;gt;\alpha = 45^{\circ}&amp;lt;/math&amp;gt; заметим, что всегда должно выполняться условие &amp;lt;b&amp;gt;dx&amp;lt;/b&amp;gt; ≥ &amp;lt;b&amp;gt;dy&amp;lt;/b&amp;gt;. &lt;br /&gt;
---- &lt;br /&gt;
== Код ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Создаем переменные d, dx, dy, где&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;d&amp;lt;/b&amp;gt; - величина, которая показывает, где прямая пересекла пиксел.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;x&amp;lt;/b&amp;gt; - координата первого пиксела по оси x.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;y&amp;lt;/b&amp;gt; - координата первого пиксела по оси y.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;2. Заходим в цикл, в котором движемся по x до момента, пока не дойдем до конца отрезка. Мы предполагаем, что координата конца больше координаты начала по x. Если же наоборот, то можно поменять их местами.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Закрашиваем нынешний пиксел.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Изменяем величину d, чтобы показать пересечение стенки отрезком в данном пикселе. &lt;br /&gt;
&amp;lt;br&amp;gt;4.1. Если у нас d ≥ 0, то увеличиваем y(то есть поднимаемся вверх).&lt;br /&gt;
&amp;lt;br&amp;gt;5. Инкрементируем x, чтобы перейти вправо.  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 d = 2*dy-dx;&lt;br /&gt;
 x = x1; y = y1;&lt;br /&gt;
 do {&lt;br /&gt;
     PutPixel(x, y);&lt;br /&gt;
     if (d&amp;lt;0)&lt;br /&gt;
         d += 2*dy;&lt;br /&gt;
     else{&lt;br /&gt;
         d += 2*(dy-dx);&lt;br /&gt;
         ++y;&lt;br /&gt;
     }&lt;br /&gt;
     ++x;&lt;br /&gt;
 } while(x&amp;lt;=x2);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Важно ==&lt;br /&gt;
&amp;lt;br&amp;gt;Если угол наклона более 45, то dx ≤ dy, следовательно, алгоритм &amp;quot;разворачивается&amp;quot; и мы начинаем идти не по x, а по y. В коде переменные поменяются местами.&lt;br /&gt;
&amp;lt;br&amp;gt;Если угол наклона отрицательный, то мы идем не вверх(++y), а вниз(--y).&lt;/div&gt;</summary>
		<author><name>T.o.r.t.i.k1</name></author>
	</entry>
</feed>