ARTemis のにじみペンですが、 「インプリメント」なんて呼べるほど大したアイデアがあるわけでは ありません(^^;) ただ単に「でたらめな方向へ、だんだん(濃度が)薄くなりながら伸 びていく」というのを何度も繰り返しているだけです。 TurboGraphics の「色を画面に溜めていく」という方法よりもインチ キくさいです(爆) 実際のアルゴリズムは、 --------------------------------------------------------------------- void blot_plot(int x, int y, int nBranch, int nRepeat) // ●ランダムに伸びていく線を一本描く。 // nBranch : いくつに枝分かれするのか // nRepeat : 何ピクセル分伸びるのか { deci nGrayCutRate; // 1ピクセルにつきどれだけ濃度を減らすか void blot_plot_sub(int x, int y, int nRepeat, deci nGrayScale) // nRepeat : あと何ピクセル分伸びるのか // nGrayScale : ピクセルを描画する濃度 (0:薄い 〜 256:濃い) { if (nRepeat <= 0 || nGrayScale <= 0) return; PSET(x,y, DeciToInt(nGrayScale)); // ピクセルを描画 int i; for (i = 0; i < nBranch; i++) { int nx,ny; nx = x + rand() % 3 - 1; // ランダムに1ドット移動 ny = y + rand() % 3 - 1; blot_plot_sub(nx, ny, nRepeat-1, nGrayScale-nGrayCutRate); // ↑自分自身を再帰的に呼び出し、続くピクセルを描画 } } nGrayCutRate = IntToDeci(50) / nRepeat; blot_plot_sub(x,y,nRepeat,IntToDeci(50)); // (↑このへんの 50 という数値が特にインチキくさい) } --------------------------------------------------------------------- (※) deci 型とは、実際には int 型で、10ビット固定小数点として扱う。 ……という具合になっています。(実際のソースプログラムはフリコレ内に入ってい て、にじみペンに関する処理は subgrp.c 580行目あたりにあります) 松内