我正在研究逃逸時間分形作爲我的12年級項目,用C++編寫,使用簡單的graphics.h庫已經過時但似乎足夠了。 生成Mandelbrot集合的代碼似乎有效,我假定Julia集合將是相同的變體。下面是代碼: (這裏,fx和fy是簡單地起到將實際複雜座標等(-0.003,0.05)轉換爲屏幕上的像素的實際值)Julia設置渲染代碼
int p;
x0=0, y0=0;
long double r, i;
cout<<"Enter c"<<endl;
cin>>r>>i;
for(int i= fx(-2); i<=fx(2); i++)
{
for(int j= fy(-2); j>=fy(2); j--)
{
long double x=0.0, y= 0.0,t;
x= gx(i), y= gy(j);
int k= -1;
while((x*x + y*y <4)&& k<it-1)
{
t= x*x - y*y + r;
y= 2*x*y + i ;
x=t;
k++;
}
p= k*pd;
setcolor(COLOR(colour[p][0],colour[p][1],colour[p][2]));
putpixel(i,j,getcolor());
}
}
但這似乎並非如此。輸出窗口顯示半徑= 2的整個圓,其顏色對應於1次迭代的逸出時間。
此外,在試圖尋找一個解決這個問題,我已經看到了所有的算法其他人使用有點初始化初始座標如下:
x = (col - width/2)*4.0/width;
y = (row - height/2)*4.0/width;
有人能解釋一下我錯過了嗎?
你有一個Mandelbrot發電機嗎?將其修改爲Julia涉及將變量更改爲常量。如果你減少了循環變量,這個'(int j = fy(-2); j> = fy(2); j - )'循環如何?這會表明'fy(-2)'大於'fy(2)'。 – karatedog
@karatedog否,在BGI窗口中,(0.0)是左上角,(寬度,高度)是右下角。所以要從y = -2到y = +2,你必須減少j的值。是的,我有一個Mandelbrot集合發電機。 –
'it'的價值是什麼?我建議通常,當你正在調試模擬每一個輸入數據,並使用常量值而不是變量(比如用50代替'it') – karatedog