ISSN 1812-9498. ÂÅÑÒÍÈÊ ÀÃÒÓ. 2006. № 1 (30)
222
y_e:=geometry[VerticalCoord](E):
Для визуализации полученных результатов воспользуемся элемен-
тами библиотеки plottools, предназначенной для изображения на графиках
простейших геометрических фигур:
zveno1[i]:= plottools[line]([0,0],[x_a||i,y_a||i],color =blue,thickness=2):
zveno1_[i]:=plottools[line]([0,0],[x_a_||i,y_a_||i],color =blue,thickness=2):
zveno2[i]:=plottools[line]([x_a||i,y_a||i],[x_b||i,y_b||i],color=
=blue,thickness=2):
zveno2_[i]:=plottools[line]([x_a_||i,y_a_||i],[x_b||i,y_b||i],color
=blue,thickness=2):
zveno3[i]:=plottools[line]([x_b||i,y_b||i],[x_d||i,y_d||i],color=
=blue,thickness=2):
polzun[i]:=plottools[polygon]([[x_d||i-
0.5,y_d||i+0.2],[x_d||i+0.5,y_d||i+0.2],[x_d||i+0.5,y_d||i-0.2],[x_d||i-0.5,
y_d||i-0.2]],color= yellow):
krivoship[i]:=plottools[line]([x_c||i,y_c||i],[x_e,y_e],color
=blue,thickness=2):
opora1:=plottools[polygon]([[0,0],[-.2,-.2],[.2,-.2]],color=red, thickness=1):
opora2:=plottools[polygon]([[x_e,y_e],[x_e-.2,y_e-.2],[x_e+.2,y_e-.2]],
color=red, thickness=1):
z1_[i]:=plottools[circle]([0,0],l1):
z2_[i]:=plottools[circle]([x_b||i,y_b||i],l2):
Как видно из этой записи, такие команды, как line и circle встречают-
ся не только в библиотеке geometry, поэтому необходимо конкретизировать
их принадлежность. Новой командой является команда polygon, служащая
для задания многоугольника по координатам его вершин. Опции color и
thickness задают цвет и толщину линии изображаемой фигуры. Теперь
можно построить i-й план положений с помощью команды display.
Индекс i у каждого определенного параметра позволяет нам сгруп-
пировать весь алгоритм расчета в цикл, т. е. алгоритм будет выполняться
для каждого i из определенной последовательности. Maple позволяет соз-
дать процедуру, в которую будет заключен этот алгоритм. В результате
получим n планов положений. Если их показывать по очереди, то получим
анимацию движения механизма, заданную процедурой, которая носит на-
звание pp, что означает «планы положений»:
pp:= proc(Npoints::numeric)
local
step,i,ugol,C,O,E,ec,OE,cd,D,D1,D2,x1_d,x2_d,CD,db,B,B1,B2,x1_b,x2_b,b
a,oa,x1_a,x2_a,U,zveno1,zveno1_,zveno2,zveno2_,zveno3,polzun,krivoship,
opora1,opora2,picture,x_a,y_a,x_b,y_b,x_c,y_c,x_d,y_d,x_e,y_e,itogo,
z1_,z2_;
step := (ug2 - ug1)/(Npoints - 1);
for i from 0 to Npoints-1 do
ugol[i]:=ug1+step*i;
……………………………………………………………………………………
……………………………………………………………………………………