断面性能(面積、モーメント)

 投稿者:山中和義  投稿日:2011年12月12日(月)19時56分1秒
 
!座標法で図形(多角形)の断面性能を求める

DATA 12 !頂点の個数 I型
DATA    0, 0 !頂点の座標
DATA   25, 0
DATA   25, 2.5
DATA 13.1, 2.5
DATA 13.1, 47.5
DATA   25, 47.5
DATA   25, 50
DATA    0, 50
DATA    0, 47.5
DATA 11.9, 47.5
DATA 11.9, 2.5
DATA    0, 2.5


!LET CX=20 !中心位置 ※円型 多角形による近似
!LET CY=10
!LET R=30 !半径
!
!LET N=360 !頂点の個数
!DIM X(N),Y(N) !頂点の座標
!FOR i=1 TO N
!   LET X(i)=R*COS(RAD(i-1))+CX
!   LET Y(i)=R*SIN(RAD(i-1))+CY
!NEXT i


READ N !頂点の個数
DIM X(N),Y(N) !頂点の座標
FOR i=1 TO N
   READ X(i),Y(i)
NEXT i

CALL MOAofPolygon(N,X,Y,  Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本
CALL MOA_Print(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本を表示する

CALL MOA_Print2(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy,  ALPHA) !その他


!●形状を描く

LET w=Dr-Dl !幅 ※多角形の大きさ
LET h=Du-Dd !高さ
LET t=MAX(w,h) !縦横の比率を合わせる
LET xx1=Dl-t*0.1
LET xx2=Dl+t*1.1
LET yy1=Dd-t*0.1
LET yy2=Dd+t*1.1
SET WINDOW xx1,xx2,yy1,yy2 !表示領域を設定する
IF t>=10 THEN
   DRAW grid(INT(t/10),INT(t/10)) !座標を描く
ELSE
   DRAW grid(t/10,t/10) !座標を描く
END IF

CALL gcDRAWPOLYGON(N,X,Y) !多角形の形状を描く

CALL gcDRAWPOINT(Xg,Yg,"G") !図心位置

SET LINE COLOR 4 !赤色
LET L=TAN(ALPHA) !u軸 ※点(x1,y1)と通り、傾きαの直線は、Y-y1=tanα(X-x1)より
LET M=-1
LET N=-L*Xg+Yg
CALL gcDRAWLINE(L,M,N)
SET LINE COLOR 3 !緑色
LET A=-M !v軸 ※点(x1,y1)と通り、直線Lx+My+N=0に垂直な直線は、L(y-y1)=M(x-x1)より
LET B=L
LET C=-L*Yg+M*Xg
CALL gcDRAWLINE(A,B,C)

SET LINE COLOR 2 !青色
PLOT LINES: Dl,Dd; Dr,Dd; Dr,Du; Dl,Du; Dl,Dd !AABB(軸並行境界ボックス: Axis-Aligned Bounding Box)


END


!多角形
!反時計まわりに与えられた多角形の頂点が示す座標を(X[i],Y[i])、i=1,2,…,N とする。
!また、X[N+1]=X[1],Y[N+1]=Y{1]とする。

!・辺どうしが交差しない。
!・凸でも凹でも構わない。

!●断面積(sectional area、断面0次モーメント) 単位: mm^2
! 反時計まわりを正とする符号付面積である。
! S=∫dS=(1/2)Σ[i=1,N]{ X(i)*Y(i+1)-X(i+1)*Y(i) } 辺と原点からなる三角形の面積の和(2次元外積による)
! Ax=(1/2)Σ[i=1,N]{ (X(i)-X(i+1))*(Y(i)+Y(i+1)) } 辺とX軸からなる台形の面積の和
! Ay=(1/2)Σ[i=1,N]{ (Y(i+1)-Y(i))*(X(i)+X(i+1)) } 辺とY軸からなる台形の面積の和
! S=Ax=Ay
!
!以下、三角形の面積(2次元外積による)を基準に、
!
!●原点からX軸方向、原点からY軸方向の断面1次モーメント(statical moment of area) 単位: mm^3
! Sx=∫ydS=(1/6)Σ[i=1,N]{ (X(i)*Y(i+1)-X(i+1)*Y(i)) * (X(i)+X(i+1)) }
! Sy=∫xdS=(1/6)Σ[i=1,N]{ (X(i)*Y(i+1)-X(i+1)*Y(i)) * (Y(i)+Y(i+1)) }
!図心Xg軸回り、図心Yg軸回りの断面1次モーメント
! Sxg=Syg=0
!
!●図心(centroid) 単位: mm  ※荷重分布が均一なら、重心となる
! Xg=Sx/S
! Yg=Sy/S
!
!●X軸回り、Y軸回りの断面2次モーメント(moment of inertia of area) 単位: mm^4
! Jx=∫y^2dS=(1/24)Σ[i=1,N]{ (X(i)*Y(i+1)-X(i+1)*Y(i)) * ((Y(i)+Y(i+1))^2+Y(i)^2+Y(i+1)^2) }
! Jy=∫x^2dS=(1/24)Σ[i=1,N]{ (X(i)*Y(i+1)-X(i+1)*Y(i)) * ((X(i)+X(i+1))^2+X(i)^2+X(i+1)^2) }
!図心Xg軸回り、図心Yg軸回りの断面2次モーメント
! Jxg=Jx-S*Yg^2
! Jyg=Jy-S*Xg^2
!
!●原点回りの断面相乗モーメント(product of inertia of area) 単位: mm^4
! Jxy=∫xydS=(1/24)Σ[i=1,N]{ (X(i)*Y(i+1)-X(i+1)*Y(i)) * ((X(i)+X(i+1))*(Y(i)+Y(i+1))+X(i)*Y(i)+X(i+1)*Y(i+1)) }
!図心回りの断面相乗モーメント
! Jxyg=Jxy-S*Xg*Yg

EXTERNAL SUB MOAofPolygon(N,X(),Y(),  Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本
LET a=X(N) !Σ部分
LET b=Y(N)
LET c=X(1)
LET d=Y(1)

LET Du=b !座標の最大値、最小値を探す
LET Dd=b
LET Dl=a
LET Dr=a

LET wx=a+c
LET wy=b+d

LET S=a*d-b*c
LET Sx=S*wx
LET Sy=S*wy
LET Jx=S*(wy*wy-b*d)*2
LET Jy=S*(wx*wx-a*c)*2
LET Jxy=S*(wx*wy+(a*b+c*d))

FOR i=1 TO N-1
   LET a=X(i) !原点、点(a,b)、点(c,d)の3点
   LET b=Y(i)
   LET c=X(i+1)
   LET d=Y(i+1)

   IF b>Du THEN LET Du=b !上端
   IF b<Dd THEN LET Dd=b !下端
   IF a<Dl THEN LET Dl=a !左端
   IF a>Dr THEN LET Dr=a !右端

   LET wx=a+c !※似た式が多いので、まとめて乗算の回数が減るように式を変形した
   LET wy=b+d
   LET t=a*d-b*c

   LET S=S+t
   LET Sx=Sx+t*wx
   LET Sy=Sy+t*wy
   LET Jx=Jx+t*(wy*wy-b*d)*2
   LET Jy=Jy+t*(wx*wx-a*c)*2
   LET Jxy=Jxy+t*(wx*wy+(a*b+c*d))
NEXT i

LET S=S/2 !定数部分
LET Sx=Sx/6
LET Sy=Sy/6
LET Xg=Sx/S
LET Yg=Sy/S
LET Jx=Jx/24
LET Jy=Jy/24
LET Jxy=Jxy/24
END SUB

EXTERNAL SUB MOA_Print(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本を表示する
PRINT "上端=";Du; "下端=";Dd; "左端=";Dl; "右端=";Dr

PRINT "断面積 S=";S
PRINT "断面1次モーメント(原点からX軸方向)Sx=";Sx; "(原点からY軸方向)Sy=";Sy
PRINT "図心 Xg=";Xg; "Yg=";Yg
PRINT "断面2次モーメント(X軸回り)Jx=";Jx; "(Y軸回り)Jy=";Jy
PRINT "断面相乗モーメント(原点回り)Jxy=";Jxy
END SUB

EXTERNAL SUB MOA_Print2(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy,  ALPHA) !その他
LET Jxg=Jx-S*Yg^2
LET Jyg=Jy-S*Xg^2
PRINT "断面2次モーメント(図心Xg軸回り)Jxg=";Jxg; "(図心Yg軸回り)Jyg=";Jyg

LET Jxyg=Jxy-S*Xg*Yg
PRINT "断面相乗モーメント(図心回り)Jxyg=";Jxyg

PRINT


!●原点回りの断面2次極モーメント 単位: mm^4
! Jd=∫r^2dS=∫(x^2+y^2)dS=Jx+Jy
!図心回りの断面2次極モーメント
! Jdg=Jxg+Jyg

LET Jd=Jx+Jy
PRINT "断面2次極モーメント(原点回り)Jd=";Jd

LET Jdg=Jxg+Jyg
PRINT "断面2次極モーメント(図心回り)Jdg=";Jdg


!●断面2次半径 単位: mm
! Rx=√(Jx/S)
! Ry=√(Jy/S)
!図心Xg軸回り、図心Yg軸回りの断面2次半径
! Rxg=√(Jxg/S)
! Ryg=√(Jyg/S)
!図心回りの断面2次半径
! Rxyg=√(Rxg^2+Ryg^2)

LET Rx=SQR(Jx/S)
LET Ry=SQR(Jy/S)
PRINT "断面2次半径(X軸回り)Rx=";Rx; "(Y軸回り)Ry=";Ry

LET Rxg=SQR(Jxg/S)
LET Ryg=SQR(Jyg/S)
PRINT "断面2次半径(図心Xg軸回り)Rxg=";Rxg; "(図心Yg軸回り)Ryg=";Ryg

LET Rxyg=SQR(Rxg^2+Ryg^2)
PRINT "断面2次半径(図心回り)Rxyg=";Rxyg


!●断面係数(section modulus) 単位: mm^3
! 上端 Wu=Jyg/d dは、図心から上端までの距離
! 下端 Wd=Jyg/d dは、図心から下端までの距離
! 左端 Wl=Jxg/d dは、図心から左端までの距離
! 右端 Wr=Jxg/d dは、図心から右端までの距離

LET Mu=Jxg/(Du-Yg) !図心を基準にする
LET Md=Jxg/(Yg-Dd)
LET Ml=Jyg/(Xg-Dl)
LET Mr=Jyg/(Dr-Xg)

PRINT "断面係数(上端)Mu=";Mu; "(下端)Md=";Md
PRINT "    (左端)Ml=";Ml; "(右端)Mr=";Mr

PRINT


!●X軸からの主軸の角度α 単位: ラジアン
! α=(1/2)ArcTan( (-2*Jxy)/(Jx-Jy) )

IF Jy-Jx=0 THEN
   LET ALPHA=PI
ELSE
   LET ALPHA=ATN( (2*Jxy)/(Jy-Jx) )/2
END IF
PRINT "主軸の角度=";DEG(ALPHA);"°"


!●主軸回りの断面2次モーメント(固有断面2次モーメント) 単位: mm^4
! Ju=( Jx+Jy + √((Jx-Jy)^2 + 4*Jxy^2) ) / 2
! Jv=( Jx+Jy - √((Jx-Jy)^2 + 4*Jxy^2) ) / 2
! Juv=0

LET t=SQR((Jx-Jy)^2+4*Jxy^2)
LET Ju=(Jx+Jy+t)/2
LET Jv=(Jx+Jy-t)/2
LET Juv=0

PRINT "断面2次モーメント(主軸u軸回り)Ju=";Ju; "(v軸回り)Jv=";Jv
!!PRINT "断面2次モーメント(主軸回り)Juv=";Juv
END SUB


!作図ツール

EXTERNAL SUB gcDRAWPOINT(x,y,s$) !点を描く
PLOT POINTS: x,y
PLOT TEXT ,AT x,y: s$
END SUB

EXTERNAL SUB gcDRAWLINE(L,M,N) !直線Lx+My+N=0を描く
IF (L=0 AND M=0) THEN
   PRINT "L=M=0なので、直線が成立しません。"; L;M;N
ELSE
   ASK WINDOW x1,x2,y1,y2

   IF ABS(L)>ABS(M) THEN !y=±xの傾きより大きいなら ※y軸に平行な直線を含む
      PLOT LINES: -(M*y1+N)/L,y1; -(M*y2+N)/L,y2
   ELSE
      PLOT LINES: x1,-(L*x1+N)/M; x2,-(L*x2+N)/M
   END IF
END IF
END SUB

EXTERNAL SUB gcDRAWPOLYGON(N,X(),Y()) !多角形を描く
FOR i=1 TO N !折れ線でつなぐ
   PLOT LINES: X(i),Y(i);
NEXT i
PLOT LINES: X(1),Y(1) !閉じる
END SUB


実行結果


上端= 50 下端= 0 左端= 0 右端= 25
断面積 S= 179
断面1次モーメント(原点からX軸方向)Sx= 2237.5 (原点からY軸方向)Sy= 4475
図心 Xg= 12.5 Yg= 25
断面2次モーメント(X軸回り)Jx= 191560.416666667 (Y軸回り)Jy= 34485.6466666667
断面相乗モーメント(原点回り)Jxy= 55937.5
断面2次モーメント(図心Xg軸回り)Jxg= 79685.416666667 (図心Yg軸回り)Jyg= 6516.8966666667
断面相乗モーメント(図心回り)Jxyg= 0

断面2次極モーメント(原点回り)Jd= 226046.063333334
断面2次極モーメント(図心回り)Jdg= 86202.3133333337
断面2次半径(X軸回り)Rx= 32.7134517517199 (Y軸回り)Ry= 13.8801024473114
断面2次半径(図心Xg軸回り)Rxg= 21.0990503462148 (図心Yg軸回り)Ryg= 6.03384155806719
断面2次半径(図心回り)Rxyg= 21.9448665856042
断面係数(上端)Mu= 3187.41666666668 (下端)Md= 3187.41666666668
    (左端)Ml= 521.351733333336 (右端)Mr= 521.351733333336

主軸の角度=-17.7300030228545 °
断面2次モーメント(主軸u軸回り)Ju= 209444.630641628 (v軸回り)Jv= 16601.4326917054


 

Re: 断面性能(面積、モーメント)

 投稿者:山中和義  投稿日:2011年12月13日(火)10時23分11秒
  > No.1721[元記事へ]

図形を分けて考える。

●例1

!座標法で図形(多角形)の断面性能を求める

!エ = ━ + ┃ + ━

DATA 4 !頂点の個数 ※下フランジ
DATA    0, 0 !頂点の座標
DATA   25, 0
DATA   25, 2.5
DATA    0, 2.5

READ N1 !頂点の個数
DIM X1(N1),Y1(N1) !頂点の座標
FOR i=1 TO N1
   READ X1(i),Y1(i)
NEXT i
CALL MOAofPolygon(N1,X1,Y1,  Du1,Dd1,Dl1,Dr1, S1,Sx1,Sy1,Xg1,Yg1,Jx1,Jy1,Jxy1) !基本
CALL MOA_Print(Du1,Dd1,Dl1,Dr1, S1,Sx1,Sy1,Xg1,Yg1,Jx1,Jy1,Jxy1) !基本を表示する
PRINT


DATA 4 !頂点の個数 ※ウェブ
DATA 11.9, 2.5 !頂点の座標
DATA 13.1, 2.5
DATA 13.1, 47.5
DATA 11.9, 47.5

READ N2 !頂点の個数
DIM X2(N2),Y2(N2) !頂点の座標
FOR i=1 TO N2
   READ X2(i),Y2(i)
NEXT i
CALL MOAofPolygon(N2,X2,Y2,  Du2,Dd2,Dl2,Dr2, S2,Sx2,Sy2,Xg2,Yg2,Jx2,Jy2,Jxy2) !基本
CALL MOA_Print(Du2,Dd2,Dl2,Dr2, S2,Sx2,Sy2,Xg2,Yg2,Jx2,Jy2,Jxy2) !基本を表示する
PRINT


DATA 4 !頂点の個数 ※上フランジ
DATA    0, 47.5 !頂点の座標
DATA   25, 47.5
DATA   25, 50
DATA    0, 50

READ N3 !頂点の個数
DIM X3(N3),Y3(N3) !頂点の座標
FOR i=1 TO N3
   READ X3(i),Y3(i)
NEXT i
CALL MOAofPolygon(N3,X3,Y3,  Du3,Dd3,Dl3,Dr3, S3,Sx3,Sy3,Xg3,Yg3,Jx3,Jy3,Jxy3) !基本
CALL MOA_Print(Du3,Dd3,Dl3,Dr3, S3,Sx3,Sy3,Xg3,Yg3,Jx3,Jy3,Jxy3) !基本を表示する
PRINT


LET Du=MAX(MAX(Du1,Du2),Du3) !3つの形状を合わせる
LET Dd=MIN(MIN(Dd1,Dd2),Dd3)
LET Dl=MIN(MIN(Dl1,Dl2),Dl3)
LET Dr=MAX(MAX(Dr1,Dr2),Dr3)
LET S=S1+S2+S3
LET Sx=Sx1+Sx2+Sx3
LET Sy=Sy1+Sy2+Sy3
LET Xg=(Xg1*S1+Xg2*S2+Xg3*S3)/S
LET Yg=(Yg1*S1+Yg2*S2+Yg3*S3)/S
LET Jx=Jx1+Jx2+Jx3
LET Jy=Jy1+Jy2+Jy3
LET Jxy=Jxy1+Jxy2+Jxy3
CALL MOA_Print(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本を表示する

CALL MOA_Print2(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy,  ALPHA) !その他


!●形状を描く

LET w=Dr-Dl !幅 ※多角形の大きさ
LET h=Du-Dd !高さ
LET t=MAX(w,h) !縦横の比率を合わせる
LET xx1=Dl-t*0.1
LET xx2=Dl+t*1.1
LET yy1=Dd-t*0.1
LET yy2=Dd+t*1.1
SET WINDOW xx1,xx2,yy1,yy2 !表示領域を設定する
IF t>=10 THEN
   DRAW grid(INT(t/10),INT(t/10)) !座標を描く
ELSE
   DRAW grid(t/10,t/10) !座標を描く
END IF

CALL gcDRAWPOLYGON(N1,X1,Y1) !多角形の形状を描く
CALL gcDRAWPOLYGON(N2,X2,Y2)
CALL gcDRAWPOLYGON(N3,X3,Y3)

CALL gcDRAWPOINT(Xg,Yg,"G") !図心位置

SET LINE COLOR 4 !赤色
LET L=TAN(ALPHA) !u軸 ※点(x1,y1)と通り、傾きαの直線は、Y-y1=tanα(X-x1)より
LET M=-1
LET N=-L*Xg+Yg
CALL gcDRAWLINE(L,M,N)
SET LINE COLOR 3 !緑色
LET A=-M !v軸 ※点(x1,y1)と通り、直線Lx+My+N=0に垂直な直線は、L(y-y1)=M(x-x1)より
LET B=L
LET C=-L*Yg+M*Xg
CALL gcDRAWLINE(A,B,C)

SET LINE COLOR 2 !青色
PLOT LINES: Dl,Dd; Dr,Dd; Dr,Du; Dl,Du; Dl,Dd !AABB(軸並行境界ボックス: Axis-Aligned Bounding Box)


END

※サブルーチン部分は省略します。


実行結果

上端= 2.5 下端= 0 左端= 0 右端= 25
断面積 S= 62.5
断面1次モーメント(原点からX軸方向)Sx= 781.25 (原点からY軸方向)Sy= 78.125
図心 Xg= 12.5 Yg= 1.25
断面2次モーメント(X軸回り)Jx= 130.208333333333 (Y軸回り)Jy= 13020.8333333333
断面相乗モーメント(原点回り)Jxy= 976.5625

上端= 47.5 下端= 2.5 左端= 11.9 右端= 13.1
断面積 S= 54
断面1次モーメント(原点からX軸方向)Sx= 675 (原点からY軸方向)Sy= 1350
図心 Xg= 12.5 Yg= 25
断面2次モーメント(X軸回り)Jx= 42862.5 (Y軸回り)Jy= 8443.98
断面相乗モーメント(原点回り)Jxy= 16875

上端= 50 下端= 47.5 左端= 0 右端= 25
断面積 S= 62.5
断面1次モーメント(原点からX軸方向)Sx= 781.25 (原点からY軸方向)Sy= 3046.875
図心 Xg= 12.5 Yg= 48.75
断面2次モーメント(X軸回り)Jx= 148567.708333333 (Y軸回り)Jy= 13020.8333333333
断面相乗モーメント(原点回り)Jxy= 38085.9375

上端= 50 下端= 0 左端= 0 右端= 25
断面積 S= 179
断面1次モーメント(原点からX軸方向)Sx= 2237.5 (原点からY軸方向)Sy= 4475
図心 Xg= 12.5 Yg= 25
断面2次モーメント(X軸回り)Jx= 191560.416666666 (Y軸回り)Jy= 34485.6466666666
断面相乗モーメント(原点回り)Jxy= 55937.5
断面2次モーメント(図心Xg軸回り)Jxg= 79685.416666666 (図心Yg軸回り)Jyg= 6516.8966666666
断面相乗モーメント(図心回り)Jxyg= 0

断面2次極モーメント(原点回り)Jd= 226046.063333333
断面2次極モーメント(図心回り)Jdg= 86202.3133333326
断面2次半径(X軸回り)Rx= 32.7134517517198 (Y軸回り)Ry= 13.8801024473113
断面2次半径(図心Xg軸回り)Rxg= 21.0990503462147 (図心Yg軸回り)Ryg= 6.03384155806714
断面2次半径(図心回り)Rxyg= 21.944866585604
断面係数(上端)Mu= 3187.41666666664 (下端)Md= 3187.41666666664
    (左端)Ml= 521.351733333328 (右端)Mr= 521.351733333328

主軸の角度=-17.7300030228546 °
断面2次モーメント(主軸u軸回り)Ju= 209444.630641627 (v軸回り)Jv= 16601.4326917053



●例2

!座標法で図形(多角形)の断面性能を求める

!エ = □ - ロ - ロ

DATA 4 !頂点の個数 I型
DATA    0, 0 !頂点の座標 全体の矩形
DATA   25, 0
DATA   25, 50
DATA    0, 50

READ N1 !頂点の個数
DIM X1(N1),Y1(N1) !頂点の座標
FOR i=1 TO N1
   READ X1(i),Y1(i)
NEXT i
CALL MOAofPolygon(N1,X1,Y1,  Du1,Dd1,Dl1,Dr1, S1,Sx1,Sy1,Xg1,Yg1,Jx1,Jy1,Jxy1) !基本
CALL MOA_Print(Du1,Dd1,Dl1,Dr1, S1,Sx1,Sy1,Xg1,Yg1,Jx1,Jy1,Jxy1) !基本を表示する
PRINT


DATA 4
DATA 13.1, 2.5 !ウェブ右側 ※差の図形は右回り
DATA 13.1, 47.5
DATA   25, 47.5
DATA   25, 2.5

READ N2 !頂点の個数
DIM X2(N2),Y2(N2) !頂点の座標
FOR i=1 TO N2
   READ X2(i),Y2(i)
NEXT i
CALL MOAofPolygon(N2,X2,Y2,  Du2,Dd2,Dl2,Dr2, S2,Sx2,Sy2,Xg2,Yg2,Jx2,Jy2,Jxy2) !基本
CALL MOA_Print(Du2,Dd2,Dl2,Dr2, S2,Sx2,Sy2,Xg2,Yg2,Jx2,Jy2,Jxy2) !基本を表示する
PRINT


DATA 4
DATA    0, 2.5 !ウェブ左側 ※差の図形は右回り
DATA    0, 47.5
DATA 11.9, 47.5
DATA 11.9, 2.5

READ N3 !頂点の個数
DIM X3(N3),Y3(N3) !頂点の座標
FOR i=1 TO N3
   READ X3(i),Y3(i)
NEXT i
CALL MOAofPolygon(N3,X3,Y3,  Du3,Dd3,Dl3,Dr3, S3,Sx3,Sy3,Xg3,Yg3,Jx3,Jy3,Jxy3) !基本
CALL MOA_Print(Du3,Dd3,Dl3,Dr3, S3,Sx3,Sy3,Xg3,Yg3,Jx3,Jy3,Jxy3) !基本を表示する
PRINT


LET Du=Du1 !3つの形状を合わせる
LET Dd=Dd1
LET Dl=Dl1
LET Dr=Dr1
LET S=S1+S2+S3
LET Sx=Sx1+Sx2+Sx3
LET Sy=Sy1+Sy2+Sy3
LET Xg=(Xg1*S1+Xg2*S2+Xg3*S3)/S
LET Yg=(Yg1*S1+Yg2*S2+Yg3*S3)/S
LET Jx=Jx1+Jx2+Jx3
LET Jy=Jy1+Jy2+Jy3
LET Jxy=Jxy1+Jxy2+Jxy3
CALL MOA_Print(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本を表示する

CALL MOA_Print2(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy,  ALPHA) !その他


!●形状を描く

LET w=Dr-Dl !幅 ※多角形の大きさ
LET h=Du-Dd !高さ
LET t=MAX(w,h) !縦横の比率を合わせる
LET xx1=Dl-t*0.1
LET xx2=Dl+t*1.1
LET yy1=Dd-t*0.1
LET yy2=Dd+t*1.1
SET WINDOW xx1,xx2,yy1,yy2 !表示領域を設定する
IF t>=10 THEN
   DRAW grid(INT(t/10),INT(t/10)) !座標を描く
ELSE
   DRAW grid(t/10,t/10) !座標を描く
END IF

CALL gcDRAWPOLYGON(N1,X1,Y1) !多角形の形状を描く
CALL gcDRAWPOLYGON(N2,X2,Y2)
CALL gcDRAWPOLYGON(N3,X3,Y3)

CALL gcDRAWPOINT(Xg,Yg,"G") !図心位置

SET LINE COLOR 4 !赤色
LET L=TAN(ALPHA) !u軸 ※点(x1,y1)と通り、傾きαの直線は、Y-y1=tanα(X-x1)より
LET M=-1
LET N=-L*Xg+Yg
CALL gcDRAWLINE(L,M,N)
SET LINE COLOR 3 !緑色
LET A=-M !v軸 ※点(x1,y1)と通り、直線Lx+My+N=0に垂直な直線は、L(y-y1)=M(x-x1)より
LET B=L
LET C=-L*Yg+M*Xg
CALL gcDRAWLINE(A,B,C)

SET LINE COLOR 2 !青色
PLOT LINES: Dl,Dd; Dr,Dd; Dr,Du; Dl,Du; Dl,Dd !AABB(軸並行境界ボックス: Axis-Aligned Bounding Box)


END

※サブルーチン部分は省略します。


実行結果

上端= 50 下端= 0 左端= 0 右端= 25
断面積 S= 1250
断面1次モーメント(原点からX軸方向)Sx= 15625 (原点からY軸方向)Sy= 31250
図心 Xg= 12.5 Yg= 25
断面2次モーメント(X軸回り)Jx= 1041666.66666667 (Y軸回り)Jy= 260416.666666667
断面相乗モーメント(原点回り)Jxy= 390625

上端= 47.5 下端= 2.5 左端= 13.1 右端= 25
断面積 S=-535.5
断面1次モーメント(原点からX軸方向)Sx=-10201.275 (原点からY軸方向)Sy=-13387.5
図心 Xg= 19.05 Yg= 25
断面2次モーメント(X軸回り)Jx=-425053.125 (Y軸回り)Jy=-200653.635
断面相乗モーメント(原点回り)Jxy=-255031.875

上端= 47.5 下端= 2.5 左端= 0 右端= 11.9
断面積 S=-535.5
断面1次モーメント(原点からX軸方向)Sx=-3186.225 (原点からY軸方向)Sy=-13387.5
図心 Xg= 5.95 Yg= 25
断面2次モーメント(X軸回り)Jx=-425053.125 (Y軸回り)Jy=-25277.385
断面相乗モーメント(原点回り)Jxy=-79655.625

上端= 50 下端= 0 左端= 0 右端= 25
断面積 S= 179
断面1次モーメント(原点からX軸方向)Sx= 2237.5 (原点からY軸方向)Sy= 4475
図心 Xg= 12.5 Yg= 25
断面2次モーメント(X軸回り)Jx= 191560.41666667 (Y軸回り)Jy= 34485.646666667
断面相乗モーメント(原点回り)Jxy= 55937.5
断面2次モーメント(図心Xg軸回り)Jxg= 79685.41666667 (図心Yg軸回り)Jyg= 6516.896666667
断面相乗モーメント(図心回り)Jxyg= 0

断面2次極モーメント(原点回り)Jd= 226046.063333337
断面2次極モーメント(図心回り)Jdg= 86202.313333337
断面2次半径(X軸回り)Rx= 32.7134517517202 (Y軸回り)Ry= 13.8801024473114
断面2次半径(図心Xg軸回り)Rxg= 21.0990503462152 (図心Yg軸回り)Ryg= 6.03384155806733
断面2次半径(図心回り)Rxyg= 21.9448665856046
断面係数(上端)Mu= 3187.4166666668 (下端)Md= 3187.4166666668
    (左端)Ml= 521.35173333336 (右端)Mr= 521.35173333336

主軸の角度=-17.7300030228543 °
断面2次モーメント(主軸u軸回り)Ju= 209444.630641631 (v軸回り)Jv= 16601.432691706


 

Re: 断面性能(面積、モーメント)

 投稿者:山中和義  投稿日:2011年12月16日(金)09時45分3秒
  > No.1722[元記事へ]

扇形、円、半円、円管などの場合


!座標法で図形(扇形)の断面性能を求める

LET CX=20 !中心の位置
LET CY=10
LET R1=20 !内半径
LET R2=50 !外半径
LET AS=-20 !開始角(単位は度)
LET AE=120 !終了角

!たとえば、
!開始角=0、終了角=360なら、円管
!内半径=0、開始角=0、終了角=360なら、円
!内半径=0、開始角=θ、終了角=開始角+180なら、傾きθの半円
!内半径=0、開始角=θ、終了角=開始角+90なら、傾きθの1/4円

CALL MOAofFan(CX,CY,R1,R2,AS,AE,  Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本

CALL MOA_Print(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本を表示する

CALL MOA_Print2(Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy,  ALPHA) !その他


!●形状を描く

LET w=Dr-Dl !幅 ※多角形の大きさ
LET h=Du-Dd !高さ
LET t=MAX(w,h) !縦横の比率を合わせる
LET xx1=Dl-t*0.1
LET xx2=Dl+t*1.1
LET yy1=Dd-t*0.1
LET yy2=Dd+t*1.1
SET WINDOW xx1,xx2,yy1,yy2 !表示領域を設定する
IF t>=10 THEN
   DRAW grid(INT(t/10),INT(t/10)) !座標を描く
ELSE
   DRAW grid(t/10,t/10) !座標を描く
END IF


CALL gcDRAWFAN(CX,CY,R1,R2,AS,AE) !扇形を描く ←←←

CALL gcDRAWPOINT(Xg,Yg,"G") !図心位置

SET LINE COLOR 4 !赤色
LET L=TAN(ALPHA) !u軸 ※点(x1,y1)と通り、傾きαの直線は、Y-y1=tanα(X-x1)より
LET M=-1
LET N=-L*Xg+Yg
CALL gcDRAWLINE(L,M,N)
SET LINE COLOR 3 !緑色
LET A=-M !v軸 ※点(x1,y1)と通り、直線Lx+My+N=0に垂直な直線は、L(y-y1)=M(x-x1)より
LET B=L
LET C=-L*Yg+M*Xg
CALL gcDRAWLINE(A,B,C)

SET LINE COLOR 2 !青色
PLOT LINES: Dl,Dd; Dr,Dd; Dr,Du; Dl,Du; Dl,Dd !AABB(軸並行境界ボックス: Axis-Aligned Bounding Box)


END


※サブルーチン 追加部分

!扇形
!●断面積(sectional area、断面0次モーメント) 単位: mm^2
! 中心(0,0)、内半径r1、外半径r2、開始角θ1、終了角θ2 とする。
! S=∫dS=(r2^2-r1^2)(θ2-θ1)/2
!
!以下、三角形の面積(2次元外積による)を基準に、
!
!●原点からX軸方向、原点からY軸方向の断面1次モーメント(statical moment of area) 単位: mm^3
! Sx=∫ydS=(r2^3-r1^3)(sinθ2-sinθ1)/3
! Sy=∫xdS=(r2^3-r1^3)(cosθ1-cosθ2)/3
!図心Xg軸回り、図心Yg軸回りの断面1次モーメント
! Sx=Sy=0
!
!●図心(centroid) 単位: mm  ※荷重分布が均一なら、重心となる
! Xg=Sx/S
! Yg=Sy/S
!
!●X軸回り、Y軸回りの断面2次モーメント(moment of inertia of area) 単位: mm^4
! Jx=∫y^2dS=(1/16)(r2^4-r1^4)(2θ2-2θ1-sin(2θ2)+sin(2θ1))
! Jy=∫x^2dS=(1/16)(r2^4-r1^4)(2θ2-2θ1+sin(2θ2)-sin(2θ1))
!図心Xg軸回り、図心Yg軸回りの断面2次モーメント
! Jxg=Jx-S*Yg^2
! Jyg=Jy-S*Xg^2
!
!●原点回りの断面相乗モーメント(product of inertia of area) 単位: mm^4
! Jxy=∫xydS=(1/16)(r2^4-r1^4)(cos(2θ2)-cos(2θ1))
!図心回りの断面相乗モーメント
! Jxyg=Jxy-S*Xg*Yg

EXTERNAL SUB MOAofFan(CX,CY,R1,R2,AS,AE,  Du,Dd,Dl,Dr, S,Sx,Sy,Xg,Yg,Jx,Jy,Jxy) !基本
LET Du=R2+CY !座標の最大値、最小値を探す ※円として把握する
LET Dd=-R2+CY
LET Dl=-R2+CX
LET Dr=R2+CX

IF AS>AE THEN LET AE=AE+360
LET TH1=RAD(AS)
LET TH2=RAD(AE)

LET S=(R2^2-R1^2)*(TH2-TH1)/2 !※中心(CX,CY)を基準とする
LET Sxc=(R2^3-R1^3)*(SIN(TH2)-SIN(TH1))/3
LET Syc=(R2^3-R1^3)*(COS(TH1)-COS(TH2))/3
LET Xgc=Sxc/S
LET Ygc=Syc/S
LET Jxc=(R2^4-R1^4)*(2*TH2-2*TH1-SIN(2*TH2)+SIN(2*TH1))/16
LET Jyc=(R2^4-R1^4)*(2*TH2-2*TH1+SIN(2*TH2)-SIN(2*TH1))/16
LET Jxyc=-(R2^4-R1^4)*(COS(2*TH2)-COS(2*TH1))/16

LET Xg=Xgc + CX !※XY軸へ換算する
LET Yg=Ygc + CY
LET Sx=Xg*S
LET Sy=Yg*S
LET Jxgc=Jxc-S*Ygc^2 !!!
LET Jygc=Jyc-S*Xgc^2
LET Jxygc=Jxyc-S*Xgc*Ygc
LET Jx=Jxgc + S*Yg^2 !=(Jxc-S*Ygc^2)+S*(Ygc+CY)^2=Jxc+2*S*CY*Ygc+S*CY^2=Jxc+S*CY*(2Ygc+CY)
LET Jy=Jygc + S*Xg^2
LET Jxy=Jxygc + S*Xg*Yg
END SUB


!作図ツール

EXTERNAL SUB gcDRAWCIRCLE(CX,CY,R,AS,AE) !円(円弧)を描く ※ASは開始角、AEは終了角
IF R<0 THEN
   PRINT "R<0なので、円が成立しません。"; CX;CY;R
ELSE
   IF AS>AE THEN LET AE=AE+360

   FOR i=AS TO AE !折れ線でつなぐ
      PLOT LINES: R*COS(RAD(i))+CX,R*SIN(RAD(i))+CY;
   NEXT i
   PLOT LINES !閉じる
END IF
END SUB

EXTERNAL SUB gcDRAWFAN(CX,CY,R1,R2,AS,AE) !扇形を描く
CALL gcDRAWCIRCLE(CX,CY,R1,AS,AE) !弧
CALL gcDRAWCIRCLE(CX,CY,R2,AS,AE)
LET co=COS(RAD(AS)) !開始
LET si=SIN(RAD(AS))
PLOT LINES: R1*co+CX,R1*si+CY; R2*co+CX,R2*si+CY
LET co=COS(RAD(AE)) !終了
LET si=SIN(RAD(AE))
PLOT LINES: R1*co+CX,R1*si+CY; R2*co+CX,R2*si+CY
CALL gcDRAWPOINT(CX,CY,"C") !中心
END SUB



実行結果

上端= 60 下端=-40 左端=-30 右端= 70
断面積 S= 2565.63400043167
断面1次モーメント(原点からX軸方向)Sx= 98426.4563459275 (原点からY軸方向)Sy= 81804.3522149674
図心 Xg= 38.3634050411583 Yg= 31.8846539300632
断面2次モーメント(X軸回り)Jx= 3324578.17994765 (Y軸回り)Jy= 4685919.41859888
断面相乗モーメント(原点回り)Jxy= 2589112.97383445
断面2次モーメント(図心Xg軸回り)Jxg= 716274.719600415 (図心Yg軸回り)Jyg= 909945.407034179
断面相乗モーメント(図心回り)Jxyg=-549180.52431792

断面2次極モーメント(原点回り)Jd= 8010497.59854653
断面2次極モーメント(図心回り)Jdg= 1626220.12663459
断面2次半径(X軸回り)Rx= 35.9973825930853 (Y軸回り)Ry= 42.7366087411558
断面2次半径(図心Xg軸回り)Rxg= 16.7086922681897 (図心Yg軸回り)Ryg= 18.8326015288029
断面2次半径(図心回り)Rxyg= 25.1763237518056
断面係数(上端)Mu= 25476.2903440237 (下端)Md= 9964.22296610457
    (左端)Ml= 13310.4166839897 (右端)Mr= 28762.4318678414

主軸の角度= 37.6352029782081 °
断面2次モーメント(主軸u軸回り)Ju= 6682340.22156183 (v軸回り)Jv= 1328157.37698471

 

戻る