見出し画像

刺し子模様をPythonで描く:檜垣・網代・菱卍

今回取り上げたのは,いずれも竹で編んだような模様だ。前回の二重籠目もそうだった。

檜垣

単純な形ながら模様としてなかなかいい。

画像1

基本パターンは簡単にとれるだろう。(省略)

網代

竹を2本ずつ直交させながら編んだ形。檜垣はすきまなく編み込まれているが,こちらは隙間がある。

画像8

これも基本パターンは簡単にとれるだろう。たとえば

画像9

線が6本なので,点の数は12。

# 基本パターンをorgを原点として描く
def basicpattern(org):
    p1 = [2, 2]
    p2 = [-2, 6]
    p3 = [1, 1]
    p4 = [-3, 5]
    p5 = [0, 0]
    p6 = [-4, 4]
    p7 = [-1, -1]
    p8 = [3, 3]
    p9 = [0, -2]
    p10 = [4, 2]
    p11 = [1, -3]
    p12 = [5, 1]
    draw(org, [p1, p2])
    draw(org, [p3, p4])
    draw(org, [p5, p6])
    draw(org, [p7, p8])
    draw(org, [p9, p10])
    draw(org, [p11, p12])

周囲をぐるりと閉曲線にすれば色塗りができる。

    fillpoly(org, [p1, p2, p6, p5, p7, p11, p12, p8, p1])

画像10

菱卍

分類としては「菱」になるが,編んだような模様なので一緒に考えた。

画像2

これは基本パターンを探し出すのにちょっと時間がかかりそう。二重籠目のときと同様,ひし形に着目するか,網の方に着目するか。
ひし形に着目して次のようにとってみよう。

画像3

斜眼で座標を拾う。点の番号は適当に。たとえば次のように。

画像4

# 基本パターンをorgを原点として描く
def basicpattern(org):
   p1 = [0, 2]
   p2 = [-4, 2]
   p3 = [0, -2]
   p4 = [2, -1]
   p5 = [-1, 2]
   p6 = [0, 1]
   p7 = [-3, 1]
   p8 = [-2, 1]
   p9 = [1, -2]
   p10 = [0, -1]
   p11 = [3, -1]
   draw(org, syagan(2, [p1, p2, p3]))
   draw(org, syagan(2, [p4, p5]))
   draw(org, syagan(2, [p6, p7]))
   draw(org, syagan(2, [p8, p9]))
   draw(org, syagan(2, [p10, p11]))

平行移動量は次の通り。

Shiftx = np.array([2*np.sqrt(3), 2])
Shifty = np.array([0, 4])

今度は網のほうに着目しよう。すると二重籠目のときと同様,色塗りができそうだ。

画像5

クロスしているところを原点にとって,たとえば次のように13個の点を取る。

画像6

# 基本パターンをorgを原点として描く
def basicpattern(org):
   p0 = [0, 0]
   p1 = [1, 0]
   p2 = [-2, 3]
   p3 = [-3, 3]
   p4 = [-1, 1]
   p5 = [-4, 1]
   p6 = [-3, 0]
   p7 = [-1, 0]
   p8 = [2, -3]
   p9 = [3, -3]
   p10 = [1, -1]
   p11 = [4, -1]
   p12 = [3, 0]
   draw(org, syagan(2, [p1, p2]))
   draw(org, syagan(2, [p0, p3]))
   draw(org, syagan(2, [p4, p5]))
   draw(org, syagan(2, [p0, p6]))
   draw(org, syagan(2, [p7, p8]))
   draw(org, syagan(2, [p0, p9]))
   draw(org, syagan(2, [p10, p11]))
   draw(org, syagan(2, [p0, p12]))

平行移動量は先ほどと同じでよい。

色塗りをしてみよう。閉曲線を作ればよいが,これは一筆で書ける。

    fillpoly(org,syagan(2, [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12]))

色は次のようにしてみた。

Drawcolor = '#668844'
Fillcolor = '#AAEE80'

画像7