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
!A4用紙に反転螺旋折りの折り目を描くプログラム
! 実行例:
! 折り目パターンを入力したら、
! $ gfortran prhrasen.f90
! $ ./a.out>hr5x6.tex
! $ platex hr5x6
! $ dvipdfmx hr5x6 (同じ名前のファイルがある場合は、$ dvipdfmx hr5x6.dvi)
! $ evince hr5x6.pdf&
implicit none
!---入力データ
integer :: nh=6 !高さ方向の段数
integer :: nr=5 !周方向の角数
real(8) :: bt=30 !度:角度(許容範囲がそこそこ大きい)
!---
real(8) :: a4h=210.d-1-1.d-1*2.d0 ! cm:A4用紙の幅-余白
real(8) :: a4b=297.d-1-0.d-1*2.d0-12.d-1 ! cm:A4用紙の高さ-余白-ヘッダー
real(8) :: pi=2.d0*asin(1.d0) !rad:円周率
real(8) :: alp,th,dh,db
integer i,j,k,l
alp=pi/nr
bt=bt/180*pi!radianに直す
th=pi/2-(alp+bt)
dh=a4h/nh
db=dh*(tan(pi/2-bt)-tan(th))
!---alpとbtが適切かどうかの確認
if (pi/4-pi/2/nr>=bt.or.bt>=pi/2-pi/nr) then
print'(A,f9.4,A,f9.4,A)',"今の条件:bt=",bt*180/pi,"度,alp=",alp*180/pi,"度"
print'("角度btの値が適切でありません。")'
print'(f6.2,A,f6.2,A)',(pi/4-alp/2)*180/pi," < bt < ",(pi/2-alp)*180/pi," (度)"
print'("を満たす値に変えて下さい。")'
endif
!---ヘッダー出力
print'("\documentclass[dvipdfmx]{jsarticle}")'
!余白は上のa4hやa4bに合わせて調整すべし
print'("\usepackage[top=0truemm,bottom=0truemm,&
&left=1truemm,right=1truemm]{geometry}%余白")'
print'("\usepackage{tikz}%描画")'
print'("")'
print'("\begin{document}")'
print'("\pagestyle{empty}%ページ番号を消す")'
print'("")'
print'("%%%%%%%%山折り・谷折り%%%%%%%%")'
print'("\begin{tikzpicture}")'
print'("\draw[very thick] (5,0.5)--(6,0.5) node[right] {山折り};")'
print'("\draw[very thick,dashed] (5,0)--(6,0) node[right] {谷折り};")'
print'("\end{tikzpicture}")'
print'("\newline")'
print'("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")'
print'("\begin{tikzpicture}")'
print'("")'
!---折り目の計算と出力
!周期
do j=0,nh-1
!縦1
do i=0,nr-1
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",db*i,&
&")--(",dh*j,",",db*i+db,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*j,",",dh*tan(th)+db*i+db,");"
endif
enddo
i=nr
if (mod(j,2)==0) then
!のりしろ1
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\filldraw[fill=black!10,draw=none] (",dh*j,",",db*i,&
&")--(",dh*(j+0.5d0),",",dh/2*tan(th)+db*(i+0.5d0),&
&")--(",dh*j,",",db*(i+0.5d0),");"
!のりしろ2
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\filldraw[fill=black!10,draw=none] (",dh*j,",",db*i,&
&")--(",dh*(j+1.d0),",",dh*tan(th)+db*i,&
&")--(",dh*(j+1.d0),",",dh*tan(th)+db*(i+0.5d0),&
&")--(",dh*(j+0.5d0),",",dh/2*tan(th)+db*(i+0.5d0),");"
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",db*i,&
&")--(",dh*j,",",db*i+db/2,");"
else
!のりしろ3
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\filldraw[fill=black!10,draw=none] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*(j+1.d0),",",db*i,&
&")--(",dh*(j+0.5d0),",",dh/2*tan(th)+db*(i+0.5d0),&
&")--(",dh*j,",",dh*tan(th)+db*(i+0.5d0),");"
!のりしろ4
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\filldraw[fill=black!10,draw=none] (",dh*(j+1.d0),",",db*i,&
&")--(",dh*(j+1.d0),",",db*(i+0.5d0),&
&")--(",dh*(j+0.5d0),",",dh/2*tan(th)+db*(i+0.5d0),");"
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*j,",",dh*tan(th)+db*(i+0.5d0),");"
endif
!斜め1
do i=0,nr
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",db*i,&
&")--(",dh*(j+1.d0),",",dh*tan(th)+db*i,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*(j+1.d0),",",db*i,");"
endif
enddo
!斜め2
do i=0,nr-1
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick,dashed] (",dh*j,",",db*i,&
&")--(",dh*(j+1.d0),",",dh*tan(th)+db*i+db,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick,dashed] (",dh*j,",",dh*tan(th)+db*(i+1.d0),&
&")--(",dh*(j+1.d0),",",db*i,");"
endif
enddo
i=nr
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick,dashed] (",dh*j,",",db*i,&
&")--(",dh*(j+0.5d0),",",dh/2*tan(th)+db*i+db/2,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick,dashed] (",dh*(j+0.5),",",dh/2*tan(th)+db*i+db/2,&
&")--(",dh*(j+1.d0),",",db*i,");"
endif
enddo
!右端
j=nh
do i=0,nr-1
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",db*i,&
&")--(",dh*j,",",db*i+db,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*j,",",dh*tan(th)+db*i+db,");"
endif
enddo
i=nr
if (mod(j,2)==0) then
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",db*i,&
&")--(",dh*j,",",db*i+db/2,");"
else
print'(A,f9.4,a,f9.4,A,f9.4,a,f9.4,A)',&
&"\draw[very thick] (",dh*j,",",dh*tan(th)+db*i,&
&")--(",dh*j,",",dh*tan(th)+db*i+db/2,");"
endif
!---フッダー出力
print'("")'
print'("\end{tikzpicture}")'
print'("\end{document}")'
end