2: 2011-07-30 (Sat) 23:21:19 iseki |
Cur: 2011-07-31 (Sun) 14:53:34 iseki |
| { | | { |
| MSGraph<sWord>* xp = NULL; | | MSGraph<sWord>* xp = NULL; |
| + | |
| int Xsize = 600; // スクリーンのXサイズ | | int Xsize = 600; // スクリーンのXサイズ |
| double Infnty = 1.0e8; // 無限大 | | double Infnty = 1.0e8; // 無限大 |
| double Ymax = 1.5; // Y軸(虚数部)の最大値の初期値 | | double Ymax = 1.5; // Y軸(虚数部)の最大値の初期値 |
| double val = 200; // 最大繰り返し回数の初期値 | | double val = 200; // 最大繰り返し回数の初期値 |
| + | |
| // 数値入力用ダイアログ | | // 数値入力用ダイアログ |
| BOOL isok = InputMultiNumDLG("X軸の最小値", &Xmin, "X軸の最大値", &Xmax, | | BOOL isok = InputMultiNumDLG("X軸の最小値", &Xmin, "X軸の最大値", &Xmax, |
| return xp; | | return xp; |
| } | | } |
| + | |
| ///////////////////////////////////////// | | ///////////////////////////////////////// |
| // 以下に処理コードを書く | | // 以下に処理コードを書く |
| int ysize = (int)(xsize*(Ymax-Ymin)/(Xmax-Xmin) + 0.5); | | int ysize = (int)(xsize*(Ymax-Ymin)/(Xmax-Xmin) + 0.5); |
| double dC = (Xmax-Xmin)/xsize; // 刻み幅 | | double dC = (Xmax-Xmin)/xsize; // 刻み幅 |
| + | |
| xp = new MSGraph<sWord>(xsize, ysize); // (xsize × ysize) の画用紙を用意 | | xp = new MSGraph<sWord>(xsize, ysize); // (xsize × ysize) の画用紙を用意 |
| int i, j, k; | | int i, j, k; |
| double Cr, Ci, Zr, Zi, Zrp, Zip; | | double Cr, Ci, Zr, Zi, Zrp, Zip; |
| + | |
| Ci = Ymax; | | Ci = Ymax; |
| for (j=0; j<xp->ys; j++) { | | for (j=0; j<xp->ys; j++) { |
| Zip = 0.0; | | Zip = 0.0; |
| k = 0; | | k = 0; |
| + | |
| // 漸化式の計算 Z(n+1) = Z(n) + C | | // 漸化式の計算 Z(n+1) = Z(n) + C |
| do { | | do { |
| k++; | | k++; |
| } while (Zr<Infnty && Zi<Infnty && k<=(int)val); // 発散のチェック | | } while (Zr<Infnty && Zi<Infnty && k<=(int)val); // 発散のチェック |
- | | + | |
- | xp->point(i, j) = (sWord)((double)(val-k+1)*4095/val); // 色を作って点を打つ( k==1:白, k==val+1:黒) | + | xp->point(i, j) = (sWord)((double)(val-k+1)*4095/val); // 色を作って点を打つ (k==1:白, k==val+1:黒) |
| Cr += dC; | | Cr += dC; |
| } | | } |
| Ci -= dC; | | Ci -= dC; |
| } | | } |
| + | |
| xp->color = GRAPH_COLOR_ARGB16; // カラーモード | | xp->color = GRAPH_COLOR_ARGB16; // カラーモード |
| + | |
| ///////////////////////////////////////// | | ///////////////////////////////////////// |
| // 処理コードはここまで | | // 処理コードはここまで |
| ///////////////////////////////////////// | | ///////////////////////////////////////// |
| + | |
| return xp; | | return xp; |
| } | | } |