0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Декартова система координат - не единственный способ графического описания. Другой способ - полярная система. В этом уроке мы познакомимся с ней и узнаем, чем она полезна. Также разберем, как скрывать внутреннюю структуру.</p>
1
<p>Декартова система координат - не единственный способ графического описания. Другой способ - полярная система. В этом уроке мы познакомимся с ней и узнаем, чем она полезна. Также разберем, как скрывать внутреннюю структуру.</p>
2
<h2>Полярная система координат</h2>
2
<h2>Полярная система координат</h2>
3
<p><strong>Полярная система координат</strong>- это способ представления точек на плоскости с помощью двух чисел: расстояния и угла. В отличие от декартовой системы координат, где используется пара чисел (x, y) для описания положения точки, в полярной системе используется радиус (r) и угол (φ):</p>
3
<p><strong>Полярная система координат</strong>- это способ представления точек на плоскости с помощью двух чисел: расстояния и угла. В отличие от декартовой системы координат, где используется пара чисел (x, y) для описания положения точки, в полярной системе используется радиус (r) и угол (φ):</p>
4
<ul><li>Радиус (r) - это расстояние от начала координат до точки. Значение радиуса всегда неотрицательное, так как это расстояние</li>
4
<ul><li>Радиус (r) - это расстояние от начала координат до точки. Значение радиуса всегда неотрицательное, так как это расстояние</li>
5
<li>Угол (φ) - это угол между положительным направлением оси Х и линией, которая соединяет начало координат и точку. Угол измеряется в градусах (от 0 до 360) или радианах (от 0 до 2π)</li>
5
<li>Угол (φ) - это угол между положительным направлением оси Х и линией, которая соединяет начало координат и точку. Угол измеряется в градусах (от 0 до 360) или радианах (от 0 до 2π)</li>
6
</ul><p>Рассмотрим пример точки P на полярной системе координат:</p>
6
</ul><p>Рассмотрим пример точки P на полярной системе координат:</p>
7
<p>Чтобы описать точку P в полярной системе координат, необходимо знать ее радиус и угол. Чтобы найти радиус, мы считаем расстояние от начала координат до нашей точки P - в нашем случае это радиус r равен 5.</p>
7
<p>Чтобы описать точку P в полярной системе координат, необходимо знать ее радиус и угол. Чтобы найти радиус, мы считаем расстояние от начала координат до нашей точки P - в нашем случае это радиус r равен 5.</p>
8
<p>Далее построим линию от центра координат до нашей точки P и найдем угол между положительным направлением оси Х и данной линией. В нашем случае угол φ равен 60°. Готовый результат записывается как P(5</p>
8
<p>Далее построим линию от центра координат до нашей точки P и найдем угол между положительным направлением оси Х и данной линией. В нашем случае угол φ равен 60°. Готовый результат записывается как P(5</p>
9
<p>°).</p>
9
<p>°).</p>
10
<p>Полярная система координат особенно удобна при решении задач, связанных с кругами, спиралями или симметрией относительно центра. В некоторых случаях она может упростить вычисления и формулы.</p>
10
<p>Полярная система координат особенно удобна при решении задач, связанных с кругами, спиралями или симметрией относительно центра. В некоторых случаях она может упростить вычисления и формулы.</p>
11
<p>Например, точка с полярными координатами (r, φ) может быть представлена в декартовой системе координат с помощью следующих формул:</p>
11
<p>Например, точка с полярными координатами (r, φ) может быть представлена в декартовой системе координат с помощью следующих формул:</p>
12
<p>x = r * cos(φ)</p>
12
<p>x = r * cos(φ)</p>
13
<p>y = r * sin(φ)</p>
13
<p>y = r * sin(φ)</p>
14
<p>Если рассматривать наш предыдущий пример, то координаты точки P(5</p>
14
<p>Если рассматривать наш предыдущий пример, то координаты точки P(5</p>
15
<p>**°<strong>) в декартовой системе координат будут рассчитываться как P(5 * cos(60</strong>°<strong>), 5 * sin(60</strong>°**)).</p>
15
<p>**°<strong>) в декартовой системе координат будут рассчитываться как P(5 * cos(60</strong>°<strong>), 5 * sin(60</strong>°**)).</p>
16
<p>Представим, что мы разрабатываем графический редактор по типу Photoshop. Библиотека для работы с графическими примитивами построена на базе декартовой системы координат. Мы понимаем, что переход на полярную систему поможет сделать работу проще и быстрее. Но для этого придется переписать практически весь код:</p>
16
<p>Представим, что мы разрабатываем графический редактор по типу Photoshop. Библиотека для работы с графическими примитивами построена на базе декартовой системы координат. Мы понимаем, что переход на полярную систему поможет сделать работу проще и быстрее. Но для этого придется переписать практически весь код:</p>
17
<p>Связано это с тем, что наша библиотека не скрывает внутреннюю структуру. Любой код, который использует точки или отрезки, знает о том, как они устроены внутри. Это относится как к коду, который создает новые примитивы, так и к коду, извлекающему из них составные части.</p>
17
<p>Связано это с тем, что наша библиотека не скрывает внутреннюю структуру. Любой код, который использует точки или отрезки, знает о том, как они устроены внутри. Это относится как к коду, который создает новые примитивы, так и к коду, извлекающему из них составные части.</p>
18
<h2>Скрываем внутреннюю структуру</h2>
18
<h2>Скрываем внутреннюю структуру</h2>
19
<p>Изменить ситуацию и спрятать реализацию можно с помощью функции:</p>
19
<p>Изменить ситуацию и спрятать реализацию можно с помощью функции:</p>
20
<p>В примере мы видим три функции: make_point(), get_x() и get_y():</p>
20
<p>В примере мы видим три функции: make_point(), get_x() и get_y():</p>
21
<ul><li>make_point() называется конструктором, потому что она создает новый примитив</li>
21
<ul><li>make_point() называется конструктором, потому что она создает новый примитив</li>
22
<li>get_x и get_y называются селекторами или selector - от слова select. Это в переводе означает "извлекать" или "выбирать"</li>
22
<li>get_x и get_y называются селекторами или selector - от слова select. Это в переводе означает "извлекать" или "выбирать"</li>
23
</ul><p>Такое небольшое изменение приведет к долгосрочным последствиям. Главное, что в прикладном коде, который использует библиотеку, нет работы со структурой напрямую:</p>
23
</ul><p>Такое небольшое изменение приведет к долгосрочным последствиям. Главное, что в прикладном коде, который использует библиотеку, нет работы со структурой напрямую:</p>
24
<p>Если посмотреть на этот код, нельзя сказать, что представляет точка изнутри, и какими конструкциями языка она представлена. Так мы построили абстракцию данных.</p>
24
<p>Если посмотреть на этот код, нельзя сказать, что представляет точка изнутри, и какими конструкциями языка она представлена. Так мы построили абстракцию данных.</p>
25
<p>Суть абстракции заключается в том, что мы скрываем внутреннюю реализацию. То есть создание абстракции с помощью данных скрывает эти данные от внешнего кода.</p>
25
<p>Суть абстракции заключается в том, что мы скрываем внутреннюю реализацию. То есть создание абстракции с помощью данных скрывает эти данные от внешнего кода.</p>
26
<p>Посмотрим на один из способов реализовать абстракцию для работы с точкой:</p>
26
<p>Посмотрим на один из способов реализовать абстракцию для работы с точкой:</p>
27
<p>Теперь мы можем менять реализацию и не переписывать весь код. При этом иногда придется переписывать отдельные части кода.</p>
27
<p>Теперь мы можем менять реализацию и не переписывать весь код. При этом иногда придется переписывать отдельные части кода.</p>
28
<p>В этом примере мы используем функцию make_point(), которая создает точку на основе декартовой системы координат. Она принимает на вход координаты x и y. При этом внутри она может представляться в полярной системе координат. Получается, что во время конструирования один формат транслируется в другой:</p>
28
<p>В этом примере мы используем функцию make_point(), которая создает точку на основе декартовой системы координат. Она принимает на вход координаты x и y. При этом внутри она может представляться в полярной системе координат. Получается, что во время конструирования один формат транслируется в другой:</p>
29
<h2>Выводы</h2>
29
<h2>Выводы</h2>
30
<p>В этом уроке мы познакомились с полярной системой координат и узнали, чем она полезна. Также разобрали, как скрывать внутреннюю структуру.</p>
30
<p>В этом уроке мы познакомились с полярной системой координат и узнали, чем она полезна. Также разобрали, как скрывать внутреннюю структуру.</p>
31
<p>Важно понимать, что после начала работы через абстракцию данных пути назад нет. Придерживайтесь всегда тех функций, которые вы создали сами. Либо тех, которые вам предоставляет используемая библиотека.</p>
31
<p>Важно понимать, что после начала работы через абстракцию данных пути назад нет. Придерживайтесь всегда тех функций, которые вы создали сами. Либо тех, которые вам предоставляет используемая библиотека.</p>