対数らせんモデル
理論形態学と貝殻の数理モデル¶
理論形態学 theoretical morphology は,生物の形態や形態形成プロセスを記述する数理モデル(理論形態モデル)を利用する研究分野. ここでは,理論形態学で盛んに研究されてきた貝殻の数理モデルをいくつか紹介する.
まず,殻のでき方(形態形成プロセス)を見ていこう. 軟体動物の殻は,炭酸カルシウムを主な成分として生物が自身でつくる生体鉱物である. 外套膜と呼ばれる上皮系の組織の辺縁部から炭酸カルシウムの結晶を分泌し殻口の``縁’’ へ少しづつ沈着させることで殻を成長させる「付加成長」と呼ばれる成長様式をとる. 例えば,腹足類の場合は,巻きの中心に対して殻口の外側が内側に対して大きく成長することで,殻が巻くことになる. 今回紹介するのモデルはこの形作りの仮定を,ある程度反映している.
対数らせんモデル¶
最もシンプルな貝殻形態のモデルとして対数らせん(logarithmic spiral)モデルを紹介する. 極座標系を考え,動径 と偏角 に以下の関係があるとする.
は成長率を定めるパラメータである. 初期条件 としたときの解は
となり,この平面曲線は対数らせんとなる.
これは,おなじみの指数成長モデルと同じかたちをしている.
# 対数らせん
import numpy as np
def log_spiral(a, r0, theta):
"""対数螺旋
対数螺旋の座標値を返す関数
Args:
a: 対数螺旋の拡大率
r0: 動径の初期値
theta: 回転角
Returns:
x, y: 対数螺旋上の座標値
"""
r = r0 * np.exp(a * theta)
x = r * np.cos(theta)
y = r * np.sin(theta)
return (x, y)対数螺旋のプロット¶
# 対数螺旋のプロット
import matplotlib.pyplot as plt# パラメータの設定
r0 = 1
a = 0.2
theta = np.linspace(0, 8 * np.pi, 1000)
# 座標値の計算
x, y = log_spiral(a, r0, theta)# プロット
plt.figure(dpi=200)
plt.axes().set_aspect("equal")
plt.plot(x, y)
様々な巻きパターン¶
パラメータを変化させると様々な平面上での巻きパタンが描ける.
N_ROW = 2
N_COL = 3
fig, ax = plt.subplots(N_ROW, N_COL, figsize=(N_COL*4, N_ROW*4,))
for idx, a in enumerate([0.01, 0.1, 0.2, 0.4, 0.8, 2]):
r0 = 1
theta = np.linspace(0, 8 * np.pi, 1000)
x, y = log_spiral(a, r0, theta)
i = idx // N_COL
j = idx % N_COL
ax[i,j].plot(x, y)
ax[i,j].set_aspect("equal")