Программа 30. Задача 48

>      restart:with(plots):with(plottools):

>      MminModule:=module()

>      export SolvMMin,runMMin:

>      SolvMMin:=proc() local i,x,y,Ris,N,F,xc,yc,Jxy,

>         Jx,Jy,Jxc,Jyc,Jxyc,Jmax,Jmin,alf,T,Z:

>      use Maplets[Tools] in

>      x:=Get('Tx'::list); # координаты x  

>      y:=Get('Ty'::list); # координаты y

>      x:=[op(x),x[1]];

>      y:=[op(y),y[1]];

>      N:=nops(x);#Число  угловых точек

>      T:=matrix(2,N,[x,y]); # Матрица координат

>      Ris:=display(polygonplot(T,color="Yellow",scaling=constrained)):

>      Z:=i->T[2,i]*T[1,i+1]-T[1,i]*T[2,i+1]:

>      F:=add(Z(i),i=1..N-1)/2;#Площадь          

>      xc:=add(Z(i)*(T[1,i]+T[1,i+1]),i=1..N-1)/6/F;#Координаты центра т.

>      yc:=add(Z(i)*(T[2,i]+T[2,i+1]),i=1..N-1)/6/F;              

>      Jx:=add(Z(i)*(T[2,i+1]^2+T[2,i+1]*T[2,i]+T[2,i]^2),i=1..N-1)/12;#Осевые моменты инерции

>      Jy:=add(Z(i)*(T[1,i+1]^2+T[1,i+1]*T[1,i]+T[1,i]^2),i=1..N-1)/12;

>      Jxy:=add(Z(i)*(T[1,i+1]*T[2,i+1]+(T[2,i+1]*T[1,i]+T[1,i+1]*T[2,i])/2
     +T[1,i]*T[2,i]),i=1..N-1)/12;
           

>       Jxc:=Jx-yc^2*F; Jyc:=Jy-xc^2*F; Jxyc:=Jxy-yc*xc*F;#Центральные моменты инерции         

Главные центральные моменты инерции        

>    Jmax:=((Jxc+Jyc)/2+sqrt((Jxc-Jyc)^2/4+Jxyc^2));

>    Jmin:=((Jxc+Jyc)/2-sqrt((Jxc-Jyc)^2/4+Jxyc^2));

>    alf:=arctan(Jxyc/(Jyc-Jmax));#arctan(2*Jxyc/(Jyc-Jxc))/2;

>    Set(TF=F):

>    Set(Txc=xc):

>    Set(Tyc=yc):

>    Set(TJx=Jx):

>    Set(TJy=Jy):

>    Set(TJxy=Jxy):

>    Set(TJxc=Jxc):

>    Set(TJyc=Jyc):

>    Set(TJxyc=Jxyc):

>    Set(TJmax=Jmax):

>    Set(TJmin=Jmin):

>    Set(Talf=alf):

>    end use;

>    Ris;

>    end proc;#SolMMin

>   

>    runMMin:=proc()

>    local a1,a2,t,z,c1,c2,p1,mplt;

>    z:='width'=7,editable = false:

>    use Maplets:-Elements in

>    t[1]:=["F=",TextField['TF'](z,'tooltip'="Площадь")]:

>    t[2]:=["xc=",TextField['Txc'](z)]:

>    t[3]:=["yc=",TextField['Tyc'](z)]:

>    t[4]:=["Jx=",TextField['TJx'](z)]:

>    t[5]:=["Jy=",TextField['TJy'](z)]:

>    t[6]:=["Jxy=",TextField['TJxy'](z)]:

>    t[7]:=["Jxc=",TextField['TJxc'](z)]:

>    t[8]:=["Jyc=",TextField['TJyc'](z)]:

>    t[9]:=["Jxyc=",TextField['TJxyc'](z)]:

>    t[10]:=["Jmax=",TextField['TJmax'](z)]:

>    t[11]:=["Jmin=",TextField['TJmin'](z)]:

>    t[12]:=["alpha=",TextField['Talf'](z)]:

>    a1:=["[x]=",TextField['Tx'](30,'value'=[0,2,1.9,1.4,0.9,0,5,5,7,7,5,7,2,2,0],'tooltip'="Введите x, обход по часовой стрелке")]:

>    a2:=["[y]=",TextField['Ty'](30,'value'=[4,4,4.8,5.4,5.8,6,6,7,7,4,4,0,0,2,0],'tooltip'="Координаты y")]:

>    c1:=Button('width=90',"Run", Evaluate('PL1' = 'display(SolvMMin())')):

>    c2:=Button("OK",Shutdown(['PL1'])):       

>    p1:=Plotter['PL1']('height=300'):

>    mplt:=Maplet(Evaluate(function = 'SolvMMin()'),

>          Window('title'="ГЕОМЕТРИЧЕСКИЕ ХАРАКТЕРИСТИКИ СЕЧЕНИЯ",

>          ["ТЕОРЕТИЧЕСКАЯ МЕХАНИКА",

>            [BoxColumn('spacing'=2,seq(t[i],i=1..12)),[a1,a2,p1]],[c1,c2]         

>          ]     )

>                 ):#Maplet

>        Maplets:-Display(mplt):

>    end use;

>    end proc;

>    end module:

>    MminModule:-runMMin():

Initializing Java runtime environment.

>