Квант
Разное

Заочная школа программирования

Юнерман Н. А.

47

Заочная школа программирования
Урок 10: Программирование задач в полярной системе координат

Материал этого урока predназначен для учащихся 8—10 классов. Для учащихся младших классов этот материал считается не обязательным.

О полярной системе координат
Для определения положения точки на плоскости существуют различные системы координат. Наряду с системой, известной вам из школьных учебников (она называется dekartовой), для решения многих задач использует полярную систему координат.

Полярные координаты точки на плоскости — два числа, определяющие положение этой точки относительно некоторых фиксированной точки OO, называемой полюсом, и не

ρ=x2+y2,sin⁡φ=yx2+y2,\rho = \sqrt{x^2 + y^2}, \quad \sin \varphi = \frac{y}{\sqrt{x^2 + y^2}},

при обратном преобразовании — по формулам

x=φcos⁡φ,y=φsin⁡φ.x = \varphi \cos \varphi, \quad y = \varphi \sin \varphi.

Спираль Архимеда
Допустим, что нужно построить кривой, которое описывает точка, движущаяся с постоянной скоростью vv по лучу, врашающему около полюса OO с постоянной угловой скоростью ω\omega. Уравнение этой кривой в полярных координатах имеет вид

ρ=aφ,\rho = a\varphi,

где a=vωa = \frac{v}{\omega}. Кривая (1) известна под названием спирали Архимеда (рис. 3).

Для построения спирали Архимеда на ЭВМ средствами графической системы Шпара удобно воспользоваться процедурой ПОЛЯР («Квант», 1980, № 1, с. 56).

Проверьте самостояльно, что программа (2), написанная на языке Рапира, рисунок спираль Архимеда (гранией цикла ПОКА выбрана в личница 5×2π5 \times 2\pi, обеспечивающая р-

48

сование пяты витков спирали). Не забудьте, что при использовании процедур ПОДВОД и ЛУЧ первый диаметр играет роль полярного радиуса, а второй — полярного угла.
Р(100,100); Н(50,50);
.ПОЛЯР; 2->A; 0->ФИ;
3.1416->ПИ; П(0,0);
(2)
ПОКА ФИ<10ПИ::
ФИ+0.01->ФИ;
Л(A
ФИ,ФИ)
ВСЕ;
.KОНЕЦ;
Задание 10.1. Составьте программу для построения кривых, описываемых уравнениями:
a) φ=a(1+cos⁡φ)\varphi = a (1 + \cos \varphi) — кардиоида,
b) φ=aφ\varphi = \frac{a}{\varphi} — гиперболическая спираль.

Семейство «цветочков»
На второй странице обложки воспроизведены сделанные на ЭВМ рисунки семейства «цветочков». Уравнение данного семейства кривых в полярных координатах имеет вид
φ=Asin⁡Bφ\varphi = A \sin B \varphi.
(3)

Задание 10.2.

  1. Что определяет коэффициент AA?

  2. В каком порядке вырисовывает отдельные лепестки?

  3. Как изменится рисунок, если в уравнении (3) заменить sin Вф на |sin Вф|?

  4. Как связно количество лепестков со значением коэффициента В?
    Рассмотите отдельно случай, когда В четно и когда В нечетно.

  5. Как нужно организовать цикл, чтобы:
    a) рисовать «цветочки» в том порядке, в каком они изображены на обложке (восстановите программу)?
    b) изобразить в семействе «цветочков» только те из них, которые имеют нечелые значения параметра В?
    b) нарисовать семейство «цветочков» только с целыми значениями В?
    (Подписи под рисунками программывать не надо.)

Правильный 16-угольник
В олимпиде по программированию («Квант», 1980, № 3) были предложены две задачи, которые решаются проще, если использовать полярную систему координат.
Первая из них (задча 3) формулируется так: составить программу для изображения правильного 16-угольника, в котором проведены все диагоналы, не проходящие через центр.
Рассмотрим полярную систему координат с полюсом в центре многоугольника OO и полярной осью OXOX, направленной вдоль луча OA16OA_{16} (рис. 4).
Найдем полярные координаты вершин данного многоугольника. Первая координата (полярный раз-

49

диус) у всех вершин одинакова и равна радиусу описанной окружности R, а второй координата (полярный угол) вычисляется по формуле φK=(π/8)∗K\varphi_K = (\pi/8)*K, где K — номер вершины.

Чтобы нарисовать требуемую фигуру, нужно вершину с номером N (1≤N<16) соединить со всеми вершинами, номера которых больше N, кроме вершины с номером (N+8) (ведь именно отрезок, соединяющий вершины с номерами N и N+8, проходит через центр). Если каждую вершину N мы соединяли бы со всеми остальные вершинами, то каждый отрезок рисовался бы дважды.

Придавая параметру R различные значения, будем получить подобные правиланые 16-угольники.

Параметрами процедур могут быть любые арифметические выражения. Например, в процедурах ПОДВОД и ЛУЧ с помощью выражений предварительно вычисляются координаты соответствующей точки. В процедурах РАМКА и НАЧАЛО выражения участвуют в качестве параметров для того, чтобы обеспечить расположение правильно многоугольника строго в середине поля рисvnка. По процедуре ДИАГ с параметром K вершина с номером N будет соединена с вершиной номер K. ПРОЦ ДИАГ K;
П(R, NПИ/8);
Л(R, K
ПИ/8);
КНЦ;
Окончательная программа имеет вид:
50—>R;
P(2R+50,2R+50);
H(R+25, R+25); 3.1416—>ПИ;
.ПОЛЯР; 1—>N;
ПОКА N<16::
1+N—>K;
ПОКА K<16::
ЕСЛИ K/=N+8 TO
ДИАГ (K); K+1—>K
ВСЕ;
N+1—>N
ВСЕ;
.КОНЕЦ;
Результат работы этой программы — рисунок 5.

Задание 10.3. Написите процедуру, рисуную правильный N-уолльник.