昔よくみた dragon 曲線。
『C言語による 最新 アルゴリズム事典』からの移植。
PROGRAM dragon_curve USE plotter IMPLICIT NONE INTEGER, PARAMETER :: norder = 10, iright = 1, ileft = 2 INTEGER :: i, k, ip, iq INTEGER :: ifold(0:2**norder) REAL :: dx, dy, dx1, dy1 CALL gr_on('dragon curve', 640, 400) CALL gr_axis(0.0, 640.0, 0.0, 400.0) CALL move(200.0, 140.0) dx = 0.0 dy = 2.0 CALL draw_rel(3.0 * dx, 3.0 * dy) ip = 0 DO k = 1, norder ifold(ip) = ileft iq = 2 * ip DO i = ip, iq SELECT CASE (ifold(iq - i)) CASE (iright) ifold(i) = ileft dx1 = -dy dy1 = dx CASE (ileft) ifold(i) = iright dx1 = dy dy1 = -dx CASE DEFAULT STOP 'error :: dragon_curve ' END SELECT CALL draw_rel(dx + dx1, dy + dy1) CALL draw_rel(3.0 * dx1, 3.0 * dy1) dx = dx1 dy = dy1 END DO ip = iq + 1 END DO CALL gr_off() STOP END PROGRAM dragon_curve