裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia で千鳥格子を描く

2021年08月16日 | ブログラミング

Julia で千鳥格子を描く

千鳥格子は利休間道(りきゅうかんとう)ともいい,英語ではハウンズ・トゥース(猟犬のキバ)とのこと。

plotter.jl を include
https://blog.goo.ne.jp/r-de-r/e/bd71a52a09801335d56f7c47d879bfe3

include("plotter.jl")

function chidorigousi(nx, ny; a=1, width=600, height=400)
    function unit(x, y)
        col = :dodgerblue3
        plotpolygon(x .+ [0, 0.5,  0,    0, 1,   1, 1.5, 1, 1,  0.5, 0]a,
                    y .+ [0, 0,   -0.5, -1, 0, 0.5, 1,   1, 1.5,  1, 1]a,
                    col=col, fcol=col)
        plotpolygon(x .+ [1, 1.5, 2, 2]a, y .+ [0, 0, 0.5, 1]a,
                   
col=col, fcol=col)
    end
    nx += 1
    ny += 1
    x1, y1, x2, y2 = 2.5a, 2.5a, 2a*nx+0.5a, 2a*ny+0.5a
    println("(width, height) = ($(x2 - x1), $(y2 - y1))")
    plotbegin(w=width, h=height)
    plotlimit(x1, y1, x2, y2)
    for i = 1:nx
        for j = 1:ny
            unit(2i*a, 2j*a)
        end
    end
    plotend()
end

chidorigousi(6, 4, a=2, width=480, height=320)
savefig("chidorigousi.png")

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Julia で亀甲ベースの格子模様を描く(8)

2021年08月16日 | ブログラミング

Julia で亀甲ベースの格子模様を描く(8)

plotter.jl を include
https://blog.goo.ne.jp/r-de-r/e/bd71a52a09801335d56f7c47d879bfe3

plotter.jl に plotarc() を追加した(未完成だが一応使える)

include("plotter.jl")

function kikkou8(nx=6, ny=5; r=1, R=0.7r, width=600, height=400)
    function unit(x, y, r, R)
        udrl1 = [:left, :left, :lower, :right, :upper, :upper]
        θ = asind(0.5r / R)
        xs = [0.5rsqrt3, 0, 0.5rsqrt3 - (1 - cosd(θ))R, NaN, 0.5rsqrt3]
        ys = [0.5r, 0, 0, NaN, -0.5r]
        xs2 = copy(xs)
        ys2 = copy(ys)
        for θ = 0:60:300 # degree
            for i = 1:length(xs)
                xs2[i], ys2[i] = xs[i] * cosd(θ) + ys[i] * sind(θ), xs[i] * sind(θ) - ys[i] * cosd(θ)
            end
            plotline(x .+ xs2, y .+ ys2, lwd=2, col=:cornsilk)
            plotarc(x + xs2[1], y + ys2[1], x + xs2[end], y + ys2[end], R,
                    udrl=udrl1[θ÷60+1], lwd=2, col=:cornsilk)
        end
    end
    sqrt3 = 
    rsqrt3 = sqrt(3)r
    nx += 1
    ny += 1
    x1, y1, x2, y2 = rsqrt3, r, (nx + 0.5) * rsqrt3, (1.5ny + 0.5)r
    println("(width, height) = ($(x2 - x1), $(y2 - y1))")
    plotbegin(w=width, h=height)
    plotlimit(x1, y1, x2, y2)
    plotbox(x1, y1, x2, y2, col=:gray, fcol=:gray)
    for y = 1:ny
        for x = 1:nx
            unit((x  + (y % 2)/2) * sqrt3 * r, y * 1.5r, r, R)
        end
    end
    plotend()
end

kikkou8(4, 3, width=625, height=440)
savefig("fig8.png")

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村