Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
! EUC-jp
! 文字コードはEUC-jp
! 自由形式のfortranで書いています。
! g77でコンパイルする場合は、
!g77 -ffree-form -o smv smv.f
! のようにコンパイルしてください。
! gfortran でコンパイルする場合は文字コードをutf-8にしてください。
!program daiya
implicit real*8 (a-h, o-z)
pi=2.d0*asin(1.d0)
r=1.d0/2.d0/pi !半径
r=1.
h=0.3d0 !高さ
m=10 !周方向分割数
n=1 !高さ方向分割数
nset=3*m*n !節点数
nyou=3*m*n !要素数
open(7,file='yousosuu.txt')
write(7,*) nyou
write(7,*) m,n
close(7)
th=2.d0*pi/m !ダイヤ1つぶんの中心角
dh=h/n !ダイヤ三角1段ぶんの高さ(斜めになってるから三角形の高さではない)
!
open(8,file='tubure6.obj')
write(8,'("3DG1")')
write(8,*) nset
!do j=0,n !高さ方向に
j=1
ph=(pi-th)/2. !多角形の1辺と中心を結ぶ三角形の底角
do i=0,m-1 !円周方向に1回りずつ
!xyz座標を出力
!上側右三角形の左下頂点、上、右下頂点を出して、
!thずつ座標変換で回転させる
thi=th*real(i)
write(8,*) sin(thi)*r*sin(ph), cos(thi)*r*sin(ph), j*dh
write(8,*) cos(thi)*(r*cos(ph)+dh/2./sin(th))+sin(thi)*r*sin(ph), &
& -sin(thi)*(r*cos(ph)+dh/2./sin(th))+cos(thi)*r*sin(ph), j*dh
write(8,*) cos(thi)*(r*cos(ph)-dh/2./tan(th))+sin(thi)*(r*sin(ph)+dh/2.), &
& -sin(thi)*(r*cos(ph)-dh/2./tan(th))+cos(thi)*(r*sin(ph)+dh/2.), j*dh
end do
!end do
!
!1周ずつ上側三形と下側三角形の頂点の節点を外から見て左回りに出力
!do j=0,n-1 !高さ方向
do i=0,m-2,2 !周方向に
if(i/=m-2) then !周の開始から一つ前まで
!上側右三角形の左下頂点、右下頂点、上頂点
write(8,*) 3,i*3,i*3+1,i*3+2,' ','0xcccccc'
!下側左三角形の左下頂点、上頂点、右下頂点(下から見て左回り)
write(8,*) 3,i*3+2,i*3+1,i*3+3,' ','0xaaaccc'
!下側中三角形の左上頂点、右上頂点、下(下から見て左回り)
write(8,*) 3,i*3+1,i*3+5,i*3+3,' ','0xaaaccc'
!下側右三角形の左下頂点、上、右下頂点(下から見て左回り)
write(8,*) 3,i*3+3,i*3+5,i*3+4,' ','0xaaaccc'
!上側左三角形の左下頂点、右下頂点、上
write(8,*) 3,i*3+5,i*3+6,i*3+4,' ','0xcccccc'
!上側中三角形の左上頂点、下、右上頂点
write(8,*) 3,i*3+4,i*3+6,i*3+8,' ','0xcccccc'
else !周の一番最後は、開始点の頂点とくっつくように
!上側右三角形の左下頂点、右下頂点、上頂点
write(8,*) 3,i*3,i*3+1,i*3+2,' ','0xcccccc'
!下側左三角形の左下頂点、上頂点、右下頂点(下から見て左回り)
write(8,*) 3,i*3+2,i*3+1,i*3+3,' ','0xaaaccc'
!下側中三角形の左上頂点、右上頂点、下(下から見て左回り)
write(8,*) 3,i*3+1,i*3+5,i*3+3,' ','0xaaaccc'
!下側右三角形の左下頂点、上、右下頂点(下から見て左回り)
write(8,*) 3,i*3+3,i*3+5,i*3+4,' ','0xaaaccc'
!上側左三角形の左下頂点、右下頂点、上
write(8,*) 3,i*3+5,0,i*3+4,' ','0xcccccc'
!上側中三角形の左上頂点、下、右上頂点
write(8,*) 3,i*3+4,0,2,' ','0xcccccc'
end if
end do
!end do
write(8,'("#")') !daiya.objファイルから要素数を読み取るとき用
close(8)
!
!
end