Image:Demj.jpg
From Wikipedia, the free encyclopedia
Size of this preview: 600 × 600 pixels
Full resolution (7,000 × 7,000 pixels, file size: 3.01 MB, MIME type: image/jpeg)
| | This is a file from the Wikimedia Commons. The description on its description page there is shown below.
|
[edit] Summary
| Description |
Julia set using DEM/J for c=-0.74543+0.11301*i and f(z)=z*z+c. It is the same as Fig 4.15 on page 194 from "The science of fractal images" by Peitgen and Saupe |
|---|---|
| Source |
self-made ( C program ) |
| Date |
2008.02.29 |
| Author | |
| Permission (Reusing this image) |
see below |
[edit] C source code
/* c console program: 1. draws Julia setfor Fc(z)=z*z +c using DEM/J algorithm ( Distance Esthimation Method for Julia set ) ------------------------------- 2. technic of creating ppm file is based on the code of Claudio Rocchini http://en.wikipedia.org/wiki/Image:Color_complex_plot.jpg create 24 bit color graphic file , portable pixmap file = PPM see http://en.wikipedia.org/wiki/Portable_pixmap to see the file use external application ( graphic viewer) --------------------------------- I think that creating graphic can't be simpler comments : Adam Majewski */ #include <stdio.h> /* estimates distance from point c to nearest point in Julia set for Fc(z)= z*z + c z(n+1) = Fc(zn) this function is based on function jdist from mbrot.cpp from program mandel by Wolf Jung (GNU GPL ) http://www.mndynamics.com/indexp.html */ double jdist(double Zx, double Zy, double Cx, double Cy , int iter_max) { int i; double x = Zx, /* Z = x+y*i */ y = Zy, /* Zp = xp+yp*1 = 1 */ xp = 1, yp = 0, /* temporary */ nz, nzp, /* a = abs(z) */ a; for (i = 1; i <= iter_max; i++) { /* first derivative zp = 2*z*zp + 1 = xp + yp*i; */ nz = 2*(x*xp - y*yp) + 1; yp = 2*(x*yp + y*xp); xp = nz; /* z = z*z + c = x+y*i */ nz = x*x - y*y + Cx; y = 2*x*y + Cy; x = nz; /* */ nz = x*x + y*y; nzp = xp*xp + yp*yp; if (nzp > 1e60 || nz > 1e60) break; } a=sqrt(nz); /* distance = 2 * |Zn| * log|Zn| / |dZn| */ return 2* a*log(a)/sqrt(nzp); } /* ------------------------------------------------------*/ int main() { const double Cx=-0.74543; const double Cy=0.11301; /* screen ( integer) coordinate */ int iX,iY; const int iXmax = 10000; const int iYmax = 10000; /* world ( double) coordinate = parameter plane*/ const double ZxMin=-2.; const double ZxMax=2.0; const double ZyMin=-2.0; const double ZyMax=2.0; /* */ double PixelWidth=(ZxMax-ZxMin)/iXmax; double PixelHeight=(ZyMax-ZyMin)/iYmax; /* color component ( R or G or B) is coded from 0 to 255 */ /* it is 24 bit color RGB file */ const int MaxColorComponentValue=255; FILE * fp; char *filename="demj-.ppm"; char *comment="# ";/* comment should start with # */ static unsigned char color[3]; double Zx, Zy, /* Z=Zx+Zy*i */ Z0x, Z0y, /* Z0 = Z0x + Z0y*i */ Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */ /* */ int Iteration; const int IterationMax=2000; /* bail-out value , radius of circle ; */ const int EscapeRadius=400; int ER2=EscapeRadius*EscapeRadius; double distanceMax=PixelWidth/15; /*jdist( 0,0,Cx,Cy, IterationMax);*/ /*create new file,give it a name and open it in binary mode */ fp= fopen(filename,"wb"); /* b - binary mode */ /*write ASCII header to the file*/ fprintf(fp,"P6\n %s\n %d\n %d\n %d\n",comment,iXmax,iYmax,MaxColorComponentValue); /* compute and write image data bytes to the file*/ for(iY=0;iY<iYmax;++iY) { Z0y=ZyMax - iY*PixelHeight; /* reverse Y axis */ if (fabs(Z0y)<PixelHeight/2) Z0y=0.0; /* */ for(iX=0;iX<iXmax;++iX) { /* initial value of orbit Z0 */ Z0x=ZxMin + iX*PixelWidth; /* Z = Z0 */ Zx=Z0x; Zy=Z0y; Zx2=Zx*Zx; Zy2=Zy*Zy; /* */ for (Iteration=0;Iteration<IterationMax && ((Zx2+Zy2)<ER2);Iteration++) { Zy=2*Zx*Zy + Cy; Zx=Zx2-Zy2 +Cx; Zx2=Zx*Zx; Zy2=Zy*Zy; }; /* compute pixel color (24 bit = 3 bytes) */ if (Iteration==IterationMax) { /* interior of Julia set = black */ color[0]=0; color[1]=0; color[2]=0; } else /* exterior of Filled-in Julia set = */ { double distance=jdist(Z0x,Z0y,Cx,Cy,IterationMax); if (distance<distanceMax) { /* Julia set = white */ color[0]=255; /* Red*/ color[1]=255; /* Green */ color[2]=255;/* Blue */ } else { /* exterior of Julia set = black */ color[0]=0; color[1]=0; color[2]=0; }; } /* check the orientation of Z-plane */ /* mark first quadrant of cartesian plane*/ /* if (Z0x>0 && Z0y>0) color[0]=255-color[0]; */ /*write color to the file*/ fwrite(color,1,3,fp); } } fclose(fp); printf("file saved "); getchar(); return 0; }
[edit] Licensing
| This file is licensed under the Creative Commons Attribution ShareAlike 3.0 Unported License. In short: you are free to share and make derivative works of the file under the conditions that you appropriately attribute it, and that you distribute it only under a license compatible with this one.
العربية | Català | Česky | Deutsch | Ελληνικά | English | Esperanto | Español | Français | Italiano | עברית | 日本語 | 한국어 | Magyar | Nederlands | Plattdüütsch | Polski | Português | Русский | Svenska | Tiếng Việt | Українська | +/- |
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Dimensions | User | Comment | |
|---|---|---|---|---|
| current | 17:13, 1 March 2008 | 7,000×7,000 (3.01 MB) | Adam majewski | ({{Information |Description=Julia set using DEM/J for c=-0.74543+0.11301*i and f(z)=z*z+c |Source=self-made |Date= |Author= Adam majewski |Permission= |other_versions= }} ) |
File links
The following pages on the English Wikipedia link to this file (pages on other projects are not listed):

