flagflag  If you want to see English page, please click "English" Button at Left.
1: 2011-07-30 (土) 23:19:33 iseki ソース
Line 1: Line 1:
 +*** mandel_proc [#iff2f1d9]
 + MANDEL_API MSGraph<sWord>* mandel_proc(MSGraph<sWord>* vp)
 + {
 +   MSGraph<sWord>* xp = NULL;
 +   int    Xsize  = 600;      // スクリーンのXサイズ
 +   double Infnty = 1.0e8;    // 無限大
 +
 +   double Xmin = -2.5;      // X軸(実数部)の最小値の初期値
 +   double Xmax = 1.0;        // X軸(実数部)の最大値の初期値
 +   double Ymin = -1.5;      // Y軸(虚数部)の最小値の初期値
 +   double Ymax = 1.5;        // Y軸(虚数部)の最大値の初期値
 +   double val  = 200;        // 最大繰り返し回数の初期値
 +
 +   // 数値入力用ダイアログ
 +   BOOL isok = InputMultiNumDLG("X軸の最小値", &Xmin, "X軸の最大値", &Xmax,
 +                                 "Y軸の最小値", &Ymin, "Y軸の最大値", &Ymax,
 +                                 "最大繰り返し回数", &val);
 +   if (!isok) {
 +       xp = new MSGraph<sWord>();
 +       xp->state = ERROR_GRAPH_CANCEL;
 +       return xp;
 +   }
 +
 +   ////////////////////////////////////////​/
 +   // 以下に処理コードを書く
 +   //        入力 vp, 出力 xp
 +   ////////////////////////////////////////​/
 +   int      xsize = Xsize;
 +   int      ysize = (int)(xsize*(Ymax-Ymin)/(Xmax-Xmin) + 0.5);
 +   double dC    = (Xmax-Xmin)/xsize;        // = (Ymax-Ymin)/ysize;    // 刻み幅
 +
 +   xp = new MSGraph<sWord>(xsize, ysize);    // (xsize × ysize) の画用紙を用意
 +
 +   int    i, j, k;
 +   double Cr, Ci, Zr, Zi, Zrp, Zip;
 +
 +   Ci = Ymax;
 +   for (j=0; j<xp->ys; j++) {
 +       Cr = Xmin;
 +       for (i=0; i<xp->xs; i++) {
 +           Zrp = 0.0;
 +           Zip = 0.0;
 +           k  = 0;
 +
 +           // 漸化式の計算  Z(n+1) = Z(n) + C
 +           do {
 +               Zr  = Zrp*Zrp - Zip*Zip + Cr;
 +               Zi  = 2.*Zrp*Zip        + Ci;
 +               Zrp = Zr;
 +               Zip = Zi;
 +               k++;
 +           } while (Zr<Infnty && Zi<Infnty && k<=(int)val);        // 発散のチェック
 +
 +           xp->point(i, j) = (sWord)((double)(val-k+1)*4095/val);  // 色を作って点を打つ( k==1:白, k==val+1:黒)
 +           Cr += dC;
 +       }
 +       Ci -= dC;
 +   }
 +
 +
 +   xp->color = GRAPH_COLOR_ARGB16;        // カラーモード
 +
 +   ////////////////////////////////////////​/
 +   // 処理コードはここまで
 +   ////////////////////////////////////////​/
 +
 +   return xp;
 + }


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 5月翌月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
<今日>

オンライン状況

86 人のユーザが現在オンラインです。 (20 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 86

もっと...

アクセスカウンタ

今日 : 1614416144161441614416144
昨日 : 1615016150161501615016150
総計 : 2349543723495437234954372349543723495437234954372349543723495437
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com