土壌・植生・写真の解析に興味があります

近くの植生の観察、孫のプログラミング手伝いを目指します^_^

ベランダに「ニイニイゼミ」が来ていました

2020-07-27 20:47:30 | 日記

ベランダの金の生る木の枝先に「ニイニイゼミ」が止まっていました。

写真を撮らせてもらい、砂糖水をご馳走して、帰しました。

こんな風に、枝(葉)先に、止まってました。

セミの羽のデザインが素敵でしたが、桜の樹肌に似せているように思いました。


「枝の分岐角の違う樹形」をスクラッチプログラミングで描いてみます

2020-07-25 16:27:25 | 日記

・枝の分岐角(交差角と呼びます)で分類、スクラッチプログラミングで形を描いてみます。

・交差角を20度から70度まで変化させて、枝の分岐深さを10までにしています。

  • 交差角度が小さく、上に伸びるものは、高い木に、なりやすいようです。(ケヤキなど)

交差角30度くらいが、太陽光を受ける面積、空間も広がり、高木に成長しやすい?

  • 交差角度が大きく、広がるものは、中、低木に、なりやすいようです。(さくら、つばきなど)

交差角40度くらいが、長い時間太陽光を受ける面積が広がり、成長しやすい?

  • 交差角が20度より小さいと、太陽光を受ける枝が広がらず、

交差角が50度より大きいと、枝分岐で、下に向かって枝が伸びてしまう。

交差角が30度くらいから40度くらいの間で、

成長の早い樹は、高木になり、日陰でも成長できる樹は、中木、低木で残っていくようです。

スクラッチプログラムのコードは、次のようです。

枝分岐の深さ、交差角を、数値を変えて、作図します。

次の枝分岐の際、枝長さは、0.5~0.7倍になるように、乱数を使います。

スクラッチプログラムで作図した画像の長さ(画素)を測って

交差角を変えた樹の、高さ(H)と幅(W):枝張を、計測しました。

交差角との関係を調べると

高い場所で、日照を受けやすい(受光空間が大きい)ものは、交差角が30度付近であり

低い高さでも、日照を受けやすい(受光面積が大きい)ものは、交差角40-50付近でした。


「樹と葉の形状」プログラミング続編:「スクラッチ」・「Python」で

2020-07-03 21:45:39 | 日記

・近くの木の葉や樹の形状を調べます。

・枝や葉脈の形で分類、プログラミングで形を描いてみます。

・子供さん向けの「スクラッチプログラミング」「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(枝の分岐の層数)、交差角(角度)を変えると、いろいろな形になります。