在复平面上,水平的轴线代表实数,垂直的轴线代表虚数。每个Julia集合(有无限多个点)都决定一个常数C,它是一个复数。现在您在复平面上任意取一个点,其值是复数Z。将其代入下面方程中进行反复迭代运算:
就是说,用旧的Z自乘再加上C后的结果作为新的Z。再把新的Z作为旧的Z,重复运算。 当你不停地做,你将最后得到的Z值有3种可能性: 1、Z值没有界限增加(趋向无穷) 2、Z值衰减(趋向于零) 3、Z值是变化的,即非1或非2
趋向无穷和趋向于零的点叫定常吸引子,很多点在定常吸引子处结束,被定常吸引子所吸引。 非趋向无穷和趋向于零的点是"Julia集合"部分,也叫混沌吸引子。 问题是我们怎样才能让计算机知道哪一个点是定常吸引子还是"Julia集合"。
一般按下述算法近似计算: n=0; while ((n++ < Nmax) && (( Real(Z)^2 + Imag(Z)^2) < Rmax)) { Z=Z*Z+C; } 其中:Nmax为最大迭代次数,Rmax为逃离界限 退出while循环有两种情况,第一种情况是: (Real(Z)^2 + Imag(Z)^2) >= Rmax 属于这种情况的点相当于"1、Z值没有界限增加(趋向无穷)",为定常吸引子,我们把这些区域着成白色。第二种情况是: n >= Nmax 属于这种情况的点相当于"2、Z 值衰减(趋向于零)"或"3、Z 值是变化的",我们把这些区域着成黑色。黑色区域图形的边界处即为"Julia集合"。"Julia集合"有着极其复杂的形态和精细的结构。 黑白两色的图形艺术感染力不强。要想得到彩色图形,最简单的方法是用迭代返回值n来着颜色。要想获得较好的艺术效果,一般对n做如下处理: Red = n*Ar+Br; Grn = n*Ag+Bg; Blu = n*Ab+Bb; if ((Red & 0x1FF) > 0xFF) Red = Red ^ 0xFF; if ((Grn & 0x1FF) > 0xFF) Grn = Grn ^ 0xFF; if ((Blu & 0x1FF) > 0xFF) Blu = Blu ^ 0xFF; 其中:Ar、Ag、Ab及Br、Bg、Bb为修正量 获得的Red、Grn、Blu为RGB三基色,着色效果为周期变化,具有较强的艺术感染力,而且等位线也蕴藏在周期变化的色彩之中。 你可以想象得出,在屏幕上顺序的试用每个像素点来反复迭代方程要花费很长的时间。一幅 1024x768 屏幕尺寸的画面有786432个点。其中一些点在计算机上要反复迭代方程次数达1000次(取决于Nmax的取值)或更多次才放弃运算。运算产生一幅Julia集合需要花费很长的时间,有时需要产生一幅做海报用的大图像时,如 10240x7680,要花几天的时间。当然,你使用高速计算机会缩短这个时间。图 4、5、6是三幅Julia集合: |
文章评论(0条评论)
登录后参与讨论