1次元コンタクトプロセス(課題0902)

[全課題リスト|サンプルソース|完成した実行ファイル(実習室のみ)|完成したソースの例] Time-stamp: "2004/12/13 Mon 20:14 hig"

ある生物群が1次元状の土地のx=0,1,2,...,20 の21地点に住んでいる. x にいる1個体は1年で死ぬが, x-1x+1 の2地点に 子供を残す(単為生殖なのです).

したがって, t年目の, 地点 x の個体数 n(x,t) は, n(x,t+1)=n(x-1,t)+n(x+1,t) にしたがう. 0年目の個体数分布が, n(,0)={0,0,....,0,1,0,0,....,0} だとして, そのあとの個体数の変化をアニメーションするプログラム cp1d1.c を, eul1d1.cを参考にして作ろう. 個体数は,

/* 前の方で定義 */
float colors[5][3]={
/* R G B = 赤緑青 */
  {0.0,0.0,0.0},		/* 黒 */
  {0.0,1.0,0.0},		/* 緑 */
  {0.0,0.0,1.0},		/* 青 */
  {1.0,0.0,1.0},		/* マゼンタ */
  {1.0,1.0,1.0}			/* 白 */
};

/* n[x] を 地点 x の人数とする */
glColor3fv(colors[n[x]%5]);
glBegin(GL_POLYGON);
  glVertex3d(x-size/2.0, 0-size/2.0, 0.0);
  glVertex3d(x-size/2.0, 0+size/2.0, 0.0);
  glVertex3d(x+size/2.0, 0+size/2.0, 0.0);
  glVertex3d(x+size/2.0, 0-size/2.0, 0.0);
glEnd();
のように, (たとえば)5で割った余りに応じて,色で表現しよう.

暇とアートなスピリットのある人は, 対応する携帯アプリ のように, 時間とともに下にずれていって表示されるようにしてみよう.


Copyright © 2004 Saburo Higuchi. All rights reserved.
樋口三郎, hig mail address