裏 RjpWiki

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

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

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

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

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

include("plotter.jl")

function kikkou5(nx=6, ny=5; r=1, width=600, height=400)
    function unit(x, y)
        sqrt32 = sqrt(3)/2
        ax, ay = 0, 0
        bx, by = sqrt32*r, r/2
        cx, cy = sqrt32*r, -r/2
        dx, dy = sqrt32/3*r, 0
        ex, ey = sqrt32/2*r, r/4
        fx, fy = 5sqrt32/6*r, r/4
        gx, gy = sqrt32*r, 0
        hx, hy = 5sqrt32/6*r, -r/4
        ix, iy = sqrt32/2*r, -r/4
        xs = [ax, bx, cx, ax, dx, dx, ex, fx, gx, hx, ix, dx, NaN, bx, fx, NaN, cx, hx];
        ys = [ay, by, cy, ay, dy, dy, ey, fy, gy, hy, iy, dy, NaN, by, fy, NaN, cy, hy];
        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)
        end
    end
    sqrt3 = sqrt(3)
    x1, y1, x2, y2 = r * sqrt3, r, (nx + 1.5) * r * sqrt3, (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 + 1
          unit(x * sqrt3 * r + (y % 2) * sqrt3 * r / 2, y * 1.5r)
        end
    end
    plotend()
end

kikkou5(4, 4, width=780, height=550)
savefig("fig5.png")

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

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

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

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

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

include("plotter.jl")

function kikkou4(nx=6, ny=5; r=1, p=0.15r, width=600, height=400)
    function unit(x, y)
        sqrt32 = sqrt(3)/2
        ax, ay = 0, 0
        bx, by = sqrt32*r, r/2
        cx, cy = sqrt32*r, -r/2
        dx, dy = 2/3*sqrt32*r - p/2, sqrt32*p
        ex, ey = 2/3*sqrt32*r + p, 0
        fx, fy = 2/3*sqrt32*r - p/2, -sqrt32*p
        x0, y0 = 2/3*sqrt32*r, 0
        xs = [ax, bx, cx, ax, dx, bx, ex, cx, fx, ax, NaN, dx, 2x0-dx, NaN, ex, 2x0-ex, NaN, fx, 2x0-fx];
        ys = [ay, by, cy, ay, dy, by, ey, cy, fy, ay, NaN, dy, -dy, NaN, ey, -ey, NaN, fy, -fy];
        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[1:10], y .+ ys2[1:10], lwd=2, col=:cornsilk)
            plotline(x .+ xs2[12:end], y .+ ys2[12:end], lwd=3, col=:snow)
        end
    end
    sqrt3 = sqrt(3)
    x1, y1, x2, y2 = r * sqrt3, r, (nx + 1.5) * r * sqrt3, (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 + 1
          unit(x * sqrt3 * r + (y % 2) * sqrt3 * r / 2, y * 1.5r)
        end
    end
    plotend()
end

kikkou4(4, 4, width=780, height=550)
savefig("fig4.png")

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

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

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

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

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

include("plotter.jl")

function kikkou3(nx=6, ny=5; r=1, p=r/6, width=600, height=400)
    function unit(x, y)
        sqrt32 = sqrt(3)/2
        ax, ay = 0, 0
        bx, by = sqrt32*r, r/2
        cx, cy = sqrt32*r, -r/2
        dx, dy = 2/3*sqrt32*r - p/2, sqrt32*p
        ex, ey = 2/3*sqrt32*r + p, 0
        fx, fy = 2/3*sqrt32*r - p/2, -sqrt32*p
        x0, y0 = 2/3*sqrt32*r, 0
        xs = [ax, bx, cx, ax, dx, bx, ex, cx, fx, ax, NaN, dx, cx, NaN, ex, ax, NaN, fx, bx];
        ys = [ay, by, cy, ay, dy, by, ey, cy, fy, ay, NaN, dy, cy, NaN, ey, ay, NaN, fy, by];
        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)
        end
    end
    sqrt3 = sqrt(3)
    p = 0.15r
    x1, y1, x2, y2 = r * sqrt3, r, (nx + 1.5) * r * sqrt3, (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 + 1
          unit(x * sqrt3 * r + (y % 2) * sqrt3 * r / 2, y * 1.5r)
        end
    end
    plotend()
end

kikkou3(4, 4, width=780, height=550)
savefig("fig3.png")

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

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

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

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

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

include("plotter.jl")

function kikkou2(nx=6, ny=5; r=1, p=r/6, width=600, height=400)
    function unit(x, y)
        xs = [0, r, r, NaN,      r/3, r, NaN,          r/3, r, NaN,   2r/3, 2r/3] .* sqrt3/2;
        ys = [0, r/2, -r/2, NaN, -r/6, r/6, NaN, r/6, -r/6, NaN, r/3, -r/3];
        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=5, col=:cornsilk)
        end
    end
    sqrt3 = sqrt(3)
    x1, y1, x2, y2 = r * sqrt3, r, (nx + 1.5) * r * sqrt3, (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 + 1
          unit(x * sqrt3 * r + (y % 2) * sqrt3 * r / 2, y * 1.5r)
        end
    end
    plotend()
end

kikkou2(4, 4, width=780, height=550)
savefig("fig2.png")

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

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

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

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

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

include("plotter.jl")

function kikkou1(nx=6, ny=5; r=1, p=r/6, width=600, height=400)
    function unit(x, y)
        xs = [0, r, r, NaN,      p, r, NaN,          p, r, NaN,           r-p, r-p] .* sqrt3/2;
        ys = [0, r/2, -r/2, NaN, p/2, (2p-r)/2, NaN, -p/2, (r-2p)/2, NaN, (r-p)/2, (p-r)/2];
        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=5, col=:cornsilk)
        end
    end
    sqrt3 = sqrt(3)
    x1, y1, x2, y2 = r * sqrt3, r, (nx + 1.5) * r * sqrt3, (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 + 1
          unit(x * sqrt3 * r + (y % 2) * sqrt3 * r / 2, y * 1.5r)
        end
    end
    plotend()
end

kikkou1(4, 4, width=780, height=550)
savefig("fig1.png")

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

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

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