в процедуре координате нижнего конца
Первой командой в процедуре координате нижнего конца пружины присваивается значение, равное длине свободной пружины, но только со знаком минус. Это следствие того, что начало координатной оси совпадает со свободным концом несжатой пружины.
Далее картинку будем отображать квадратной — ее размеры по вертикали и горизонтали будут совпадать (однако заранее они неизвестны). По горизонтали отсчет будет начинаться с 0. Пружину разместим посредине. Поскольку размер рисунка по горизонтали (и вертикали) равен Xmax-Xmin, ось пружины будет иметь координату (Xmax-Xmin)/2. Последней командой в теле процедуры является plot(). Первым параметром этой процедуры, определяющим отображаемую структуру, является команда формирования последовательности seq(), заключенная в квадратные скобки. Этой командой формируется последовательность точек, определяющая пружину. Горизонтальная координата каждой такой точки формируется поочередным добавлением/отниманием от координаты оси пружины хО половинной толщины пружины. Поскольку параметр s определяет толщину пружины в процентах к ее длине 1, непосредственно толщина пружины равна s*l/100 (половинная толщина отсюда равна s*l/200). Множитель (-l)*(i+l) нужен для чередования знаков "плюс" и "минус" при определении координаты.
Поскольку пружина состоит из N витков, в боковой проекции это соответствует N "зубцам", а значит, 2*N отрезкам, соединяющим угловые точки. Таким образом, на каждом шаге (при увеличении переменной i на единицу) вертикальная координата угловой точки должна увеличиваться на величину L(t)/(2*N), где L(t) — длина пружины в момент времени t. Начальной должна быть точка с координатой Xmin, конечной — точка с координатой Xmin+L(t). Из этих условий выбирается множитель (i-1) и диапазон изменения параметра (i=l. .2*N+1).
Параметрами процедуры plot() указаны диапазон отображения по гори-зонт&ли (0..Xmax-Xmin), вертикали (Xmin..Xmax), а также цвет пружины (синий) и толщина линии.