Программа 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"; |
> |