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