flagflag  
1: 2011-07-30 (Sat) 23:19:33 iseki source
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;
 + }


Front page   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
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
Today

Who's Online

33 user(s) are online (2 user(s) are browsing xpwiki)

Members: 0
Guests: 33

more...

Access Counter

Today : 708708708
Yesterday : 5790579057905790
Total : 2365350423653504236535042365350423653504236535042365350423653504
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com