HTML Diff
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>