トップ 一覧 検索 ヘルプ ログイン

マンデルブロ集合の変更点

+!!void __fastcall TSDIAppForm::ButtonGoClick(TObject *Sender)
+ {
+  double zr,zi,zrN,ziN;
+  double Cr2;
+  double Ci2;
+  int imax;
+  int i,ix,iy,col;
+  Cr1 = StrToFloat(EditX->Text);
+  Ci1 = StrToFloat(EditY->Text);
+  wid = StrToFloat(EditW->Text);
+  Cr2 = Cr1 + wid;
+  Ci2 = Ci1 + wid;
+  imax = StrToFloat(EditM->Text);
+  pixx = Image1->Width;
+  pixy = Image1->Height;
+  dCr=(double)wid/(double)pixx;
+  dCi=(double)wid/(double)pixy;
+  Image1->Canvas->Brush->Color = clBlack;
+  Image1->Canvas->Brush->Style = bsSolid;
+  Image1->Canvas->FillRect(Image1->Canvas->ClipRect);
+  for ( Ci=Ci1,iy=pixy ; Ci<=Ci2 ; Ci+=dCi, iy-- ) {
+	  for ( Cr=Cr1, ix=0; Cr<=Cr2; Cr+=dCr, ix++ ) {
+		  zr=0.0; zi=0.0;
+		  for ( i=0; i<imax; i++ ) {
+			  zrN = zr*zr-zi*zi+Cr;
+			  ziN = 2.0*zr*zi+Ci;
+			  if (zrN*zrN+ziN*ziN>4.0) break;
+			  zr=zrN; zi=ziN;
+		  }
+		  if (i==imax) col = 16;
+		  else col = i%16;
+		  Image1->Canvas->Pen->Color = (TColor)col_t[col];
+		  Image1->Canvas->MoveTo(ix,iy);
+		  Image1->Canvas->LineTo(ix+1,iy);
+	  }
+	  Application->ProcessMessages();
+  }
+  x1=-1;
+ }