・近くの木の葉や樹の形状を調べます。
・枝や葉脈の形で分類、プログラミングで形を描いてみます。
・子供さん向けの「スクラッチプログラミング」「Pythogプログラミング」で
枝や葉脈の形を実物とプログラミングで描いた形と比べてみました。
☆主樹の軸(主幹)と側枝の交差角度、葉の中央脈(主脈)と側脈の交差角度に
注目すると、枝と葉の形状で、分類できるように思えます。
☆大まかですが、交差角度が小さく、細身のものは、大きな高い樹に、
交差角度が大きく、広がるものは、低木に、なりやすいようです。
「スクラッチプログラミング」で、樹形を描くには、次のようにコードを書きます。
定義の変数「深さ」:枝分岐の階層数、「枝の長さ」「交差角度」を入力します。
上図では、交差角度30度のケヤキの樹の例です。
Pythonプログラミングでは、京都大学が公開している「プログラミング演習 Python 2019」
講義資料(https://repository.kulib.kyoto-u.ac.jp/dspace/handle/...)の
「6.7.4 フラクタル図形を描く」に、次のコードが示されています。
from turtle import *
# 再帰的に木を描く
def tree(n):
# 引数が1以下なら5歩すすむ
if n<=1:
forward(5)
else:
# 引数は1より大きいとき
# 引数の値に応じて前進(幹)
forward(5*(1.1**n))
# 今の位置と向きを記録
xx = pos()
h = heading()
# 左へ 30 度回転
left(30)
# 大きさ n-1 で木を描く(左の枝)
tree(n-1)
# ペンを挙げて軌跡を残さない
up()
# 先に記録した位置(幹の先端)に戻る
setpos(xx)
setheading(h)
# ペンを降ろす
down()
# 右へ15度
right(15)
# 大きさ n-1 で木を描く(右の枝)
tree(n-1)
# ペンを上げてもどる
up()
setpos(xx)
setheading(h)
# ペンを降ろす
down()
# 時間がかかるので最も早い描画
speed(0)
# 大きさ6 の木を描く
tree(6)
これを実行すると、次のような樹の図形を描けます。n=6、角度=15度の例です。
再帰の深さn(枝の分岐の層数)、交差角(角度)を変えると、いろいろな形になります。