47
Заочная школа программирования
Урок 10: Программирование задач в полярной системе координат
Материал этого урока predназначен для учащихся 8—10 классов. Для учащихся младших классов этот материал считается не обязательным.
О полярной системе координат
Для определения положения точки на плоскости существуют различные системы координат. Наряду с системой, известной вам из школьных учебников (она называется dekartовой), для решения многих задач использует полярную систему координат.
Полярные координаты точки на плоскости — два числа, определяющие положение этой точки относительно некоторых фиксированной точки , называемой полюсом, и не
при обратном преобразовании — по формулам
Спираль Архимеда
Допустим, что нужно построить кривой, которое описывает точка, движущаяся с постоянной скоростью по лучу, врашающему около полюса с постоянной угловой скоростью . Уравнение этой кривой в полярных координатах имеет вид
где . Кривая (1) известна под названием спирали Архимеда (рис. 3).
Для построения спирали Архимеда на ЭВМ средствами графической системы Шпара удобно воспользоваться процедурой ПОЛЯР («Квант», 1980, № 1, с. 56).
Проверьте самостояльно, что программа (2), написанная на языке Рапира, рисунок спираль Архимеда (гранией цикла ПОКА выбрана в личница , обеспечивающая р-
48
сование пяты витков спирали). Не забудьте, что при использовании процедур ПОДВОД и ЛУЧ первый диаметр играет роль полярного радиуса, а второй — полярного угла.
Р(100,100); Н(50,50);
.ПОЛЯР; 2->A; 0->ФИ;
3.1416->ПИ; П(0,0);
(2)
ПОКА ФИ<10ПИ::
ФИ+0.01->ФИ;
Л(AФИ,ФИ)
ВСЕ;
.KОНЕЦ;
Задание 10.1. Составьте программу для построения кривых, описываемых уравнениями:
a) — кардиоида,
b) — гиперболическая спираль.
Семейство «цветочков»
На второй странице обложки воспроизведены сделанные на ЭВМ рисунки семейства «цветочков». Уравнение данного семейства кривых в полярных координатах имеет вид
.
(3)
Задание 10.2.
-
Что определяет коэффициент ?
-
В каком порядке вырисовывает отдельные лепестки?
-
Как изменится рисунок, если в уравнении (3) заменить sin Вф на |sin Вф|?
-
Как связно количество лепестков со значением коэффициента В?
Рассмотите отдельно случай, когда В четно и когда В нечетно. -
Как нужно организовать цикл, чтобы:
a) рисовать «цветочки» в том порядке, в каком они изображены на обложке (восстановите программу)?
b) изобразить в семействе «цветочков» только те из них, которые имеют нечелые значения параметра В?
b) нарисовать семейство «цветочков» только с целыми значениями В?
(Подписи под рисунками программывать не надо.)
Правильный 16-угольник
В олимпиде по программированию («Квант», 1980, № 3) были предложены две задачи, которые решаются проще, если использовать полярную систему координат.
Первая из них (задча 3) формулируется так: составить программу для изображения правильного 16-угольника, в котором проведены все диагоналы, не проходящие через центр.
Рассмотрим полярную систему координат с полюсом в центре многоугольника и полярной осью , направленной вдоль луча (рис. 4).
Найдем полярные координаты вершин данного многоугольника. Первая координата (полярный раз-
49
диус) у всех вершин одинакова и равна радиусу описанной окружности R, а второй координата (полярный угол) вычисляется по формуле , где 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-уолльник.