File:Julia dem.png
מתוך Wikimedia Commons
קפיצה לניווט
קפיצה לחיפוש
![File:Julia dem.png](https://upload.wikimedia.org/wikipedia/commons/thumb/9/92/Julia_dem.png/800px-Julia_dem.png?20110626114607)
גודל התצוגה המקדימה הזאת: 800 × 400 פיקסלים. רזולוציות אחרות: 320 × 160 פיקסלים | 640 × 320 פיקסלים | 1,024 × 512 פיקסלים | 2,000 × 1,000 פיקסלים.
לקובץ המקורי (2,000 × 1,000 פיקסלים, גודל הקובץ: 234 ק"ב, סוג MIME: image/png)
מידע על הקובץ
נתונים מובְנים
כיתובים
כיתובים
נא להוסיף משפט שמסביר מה הקובץ מייצג
תקציר
[עריכה]תיאורJulia dem.png |
English: Julia set for fc(z)=z*z +c and c= -0.75+0.11; Made using DEM/J |
תאריך יצירה | |
מקור | נוצר על־ידי מעלה היצירה |
יוצר | Adam majewski |
-
c=-0.74543+0.11301*i
-
c= ?
-
c=-0.743643887037151+0.131825904205330i
-
c=?
-
IIM
See also:
C scr code
[עריכה]code is formatted with emacs
Make 10000x10000 ppm file
Postpocessing for better quality :
- resized and convert with ImageMagic
- convert c.ppm -resize 2000x2000 c.png
/*
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
gcc d.c -lm
it creates a.out file. Then run it :
./a.out
*/
#include <stdio.h>
#include <math.h>
int GiveEscapeTime(double C_x, double C_y, int iMax, double _ER2)
{
int i;
double Zx, Zy;
double Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */
Zx=0.0; /* initial value of orbit = critical point Z= 0 */
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
for (i=0;i<iMax && ((Zx2+Zy2)<_ER2);i++)
{
Zy=2*Zx*Zy + C_y;
Zx=Zx2-Zy2 +C_x;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
return i;
}
/*
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 mndlbrot::dist from mndlbrot.cpp
from program mandel by Wolf Jung (GNU GPL )
http://www.mndynamics.com/indexp.html
Hyunsuk Kim :
For Julia sets, z is the variable and c is a constant. Therefore df[n+1](z)/dz = 2*f[n]*f'[n] -- you don't add 1.
For the Mandelbrot set on the parameter plane, you start at z=0 and c becomes the variable. df[n+1](c)/dc = 2*f[n]*f'[n] + 1.
*/
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 = xp + yp*i; */
nz = 2*(x*xp - y*yp) ;
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(void)
{
const double Cx=-0.75;
const double Cy=0.14;
/* 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;
}
רישיון
[עריכה]אני, בעל זכויות היוצרים על עבודה זו, מפרסם בזאת את העבודה תחת הרישיון הבא:
![w:he:Creative Commons](https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/CC_some_rights_reserved.svg/90px-CC_some_rights_reserved.svg.png)
![ייחוס](https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Cc-by_new_white.svg/24px-Cc-by_new_white.svg.png)
![שיתוף זהה](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Cc-sa_white.svg/24px-Cc-sa_white.svg.png)
הקובץ הזה מתפרסם לפי תנאי רישיון קריאייטיב קומונז ייחוס-שיתוף זהה 3.0 לא מותאם.
- הנכם רשאים:
- לשתף – להעתיק, להפיץ ולהעביר את העבודה
- לערבב בין עבודות – להתאים את העבודה
- תחת התנאים הבאים:
- ייחוס – יש לתת ייחוס הולם, לתת קישור לרישיון, ולציין אם נעשו שינויים. אפשר לעשות את זה בכל צורה סבירה, אבל לא בשום צורה שמשתמע ממנה שמעניק הרישיון תומך בך או בשימוש שלך.
- שיתוף זהה – אם תיצרו רמיקס, תשנו, או תבנו על החומר, חובה עליכם להפיץ את התרומות שלך לפי תנאי רישיון זהה או תואם למקור.
היסטוריית הקובץ
ניתן ללחוץ על תאריך/שעה כדי לראות את הקובץ כפי שנראה באותו זמן.
תאריך/שעה | תמונה ממוזערת | ממדים | משתמש | הערה | |
---|---|---|---|---|---|
נוכחית | 11:46, 26 ביוני 2011 | ![]() | 1,000 × 2,000 (234 ק"ב) | Soul windsurfer (שיחה | תרומות) |
אין באפשרותך לדרוס את הקובץ הזה.
שימוש בקובץ
הדפים הבאים משתמשים בקובץ הזה:
שימוש גלובלי בקובץ
אתרי הוויקי השונים הבאים משתמשים בקובץ זה:
- שימוש באתר el.wikipedia.org
- שימוש באתר en.wikipedia.org
- שימוש באתר en.wikibooks.org