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