flagflag  If you want to see English page, please click "English" Button at Left.

mandel_proc anchor.png

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;            // 刻み幅
   
   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
Counter: 1389, today: 1, yesterday: 0
最終更新: 2011-07-31 (日) 14:53:34 (JST) (4739d) by iseki

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 7月翌月
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
<今日>

オンライン状況

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

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

もっと...

アクセスカウンタ

今日 : 924924924
昨日 : 5416541654165416
総計 : 2402450324024503240245032402450324024503240245032402450324024503
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com