Системы с колебаниями. Нахождение частоты малых колебаний маятника.
В процедуре предусмотрена возможность поворота всей описанной выше конструкции на один и тот же угол. Полученная в результате такого поворота структура будет присвоена в качестве значения переменной Res, которая инициализируется как пустой список. После этого, при последовательном переборе элементов массива S, эти элементы, повернутые на угол phi вокруг точки Р, добавляются в список Res. Поворот осуществляется процедурой rotate() из пакета plottools. В качестве первого, "разворачиваемого", аргумента указывается элемент S[i] (типа plot), где индексная переменная i пробегает значения в диапазоне от 0 до N. После этого указывается угол (phi), на который выполняется поворот (против часовой стрелки), и точка, вокруг которой следует поворот выполнять (Р).
После описания процедуры wall() инициализируем переменную Wall (последовательность), элементы которой – три стенки (две вертикальные и одна горизонтальная).
Все события будут происходить в квадрате размером 1x1. Поэтому левая вертикальная стенка имеет длину 1 и получается из горизонтальной поворотом вокруг точки [0.0] на угол 90 градусов (Pi/2) против часовой стрелки. "Потолок" получается, если горизонтальную линию перенести по вертикали на расстояние 1, т.е. базовой будет точка [0.1]. Последняя, правая стенка, получается поворотом на угол 90 градусов по часовой стрелке (-Pi/2) вокруг точки [1.1].
Для отображения шарика на стержне описывается процедура С(). Процедура имеет два параметра: длина стержня (L) и угол отклонения стержня (влево) от вертикали (alpha). Кроме того, в процедуре объявляется две локальные переменные С1 и С2. Первая переменная нужна для записи в нее объекта стержня (в качестве значения этой переменной присваивается соответствующий графический объект), а вторая – для шарика.
Стержень создается процедурой 'plottools/line'O в виде линии приемлемой толщины (опция thickness=3), где первым параметром (начальная точка) указана точка [0.5.1] (стержень подвешен по центру картинки), а вторым параметром (конечная точка)– точка [0.5-L*sin(alpha),1-L*cos(alpha)] – таковы координаты конца стержня длиной L при отклонении его влево на угол alpha. Эта же конечная точка – центр подвешенного на стержне шарика. Шарик создается с помощью команды seq('plottools/circle'([0.5-sin(alpha),1-L*cos(alpha)],0.004*i),i=1..10), которая формирует последовательность из 10 окружностей с центром в упомянутой выше точке (0.5-L*sin(alpha), 1-L*cos(alpha)] и радиусами, дискретно увеличивающимися (шаг 0.004) от 0.004 до 0.04. В результате выполнения процедуры формируется последовательность из двух элементов С1,С2, т.е. стержня и шарика (графические объекты).
Кроме шарика на стержне, нужно отобразить две пружины. Начнем с процедуры для выведения на экран одной пружины.
Пружина все время будет ориентирована по горизонтали, так что для корректного ее отображения следует знать два параметра: точку Р (левую) фиксации пружины и ее длину L.
Локальные переменные процедуры определяют число витков (N), половинную толщину (thick) пружины в абсолютных единицах (задавать толщину в процентах от длины пружины смысла не имеет, поскольку при сжатии (растягивании) пружины ее толщина будет уменьшаться (увеличиваться)), а также набор базовых точек для отображения пружины (S).