P43.mws

Программа 43

>    restart;

>    with(plots): with(plottools):

Процедура построения эпюры моментов  

>    RisEpur:=proc(Rm::Matrix,Txt,z)

>     local f,clb,clr,k,x1,x2,y1,y2,zn,sn,r1,r2,maxL,cs,d,mm1,opc,strih,stm,

>     n0,Qs,Q1,EpM,mm,op1,s0,Масштаб;

>     global L:

>    zn:=2*z-1:

>    clb:=Vector(m,(j) -> j mod 2):#Цвета эпюры

>    clr:=Vector(m,(j) -> (j mod 3)/2.):

>    maxL:=max(op(convert(L,list))):

>    s0:=maxL/40.: #Плотность штрихов на эпюре

>    f:=seq(abs((Qx[k]+Qy[k]))*L[k]^2/8,k=1..m):

>    r1:=convert(Rm,vector):

>    r2:=convert(map(abs,r1),list):

    (+) - строит, (-) - машиностр  

>    Масштаб:=-3*max(op(r2),f)/maxL:

>    if Масштаб<>0 then

>    for k to m do

>      x1:=x[str[k,1]]: x2:=x[str[k,2]]:

>      y1:=y[str[k,1]]: y2:=y[str[k,2]]:

>      sn:=L2[k]/L[k]:cs:=L1[k]/L[k]:

>      n0:=L[k]/s0:  

>      opc:=THICKNESS(1),COLOR(RGB,clr[k],0,clb[k]):

>      strih:=proc(t) d:=s0*t;  
   mm1:=((-zn*Rm[k,2]-Rm[k,1])/L[k]*d+Rm[k,1])/Масштаб:

>       Qs:=(Qx[k]+Qy[k])*sign(-L2[k])*sign(L1[k]):

>       mm:=mm1+z*Qs/2*d*(L[k]-d)/Масштаб:

>      PLOT(CURVES([[x1+d*cs,y1+d*sn],[x1+d*cs-mm*sn,y1+d*sn+mm*cs]]),opc):end;

>      stm:=seq(strih(t),t=0..n0):

>      EpM[k]:=PLOT(CURVES([[x1-Rm[k,1]/Масштаб*sn,y1+Rm[k,1]/Масштаб*cs],
                       [x2+zn*Rm[k,2]/Масштаб*sn,y2-zn*Rm[k,2]/Масштаб*cs]])),stm:

>    od:#k

>      op1:=axes=NONE,scaling=UNCONSTRAINED:

>    Эпюра||Txt:=display(seq(EpM[i],i=1..m),rama,op1,title=Txt):#

>    fi;

>    end proc:

Запись процедур на диск

>    save RisEpur, "C:\\Risepura.m";

>