朱利亞集合是一個在復平面上形成分形的點的集合。以法國數學家加斯頓·朱利亞(Gaston Julia)的名字命名。我想任何一個有關分形的資料都不會放過曼德勃羅集和朱利亞集。這里將以點集的方式生成出朱利亞集的圖形。
關於基類FractalEquation的定義及相關軟件見:混沌與分形
class JuliaSet : public FractalEquation { public: JuliaSet() { m_StartX = 0.0f; m_StartY = 0.0f; m_StartZ = 0.0f; m_ParamA = -0.75f; m_ParamB = 0.01f; } void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const { float wx, wy; float r; float theta; float rnd = yf_rand_real(1.0f); wx = x-m_ParamA; wy = y-m_ParamB; if(wx == 0) theta = PI/2; if(wx > 0) theta = atanf(wy/wx); if(wx < 0) theta = PI-atanf(wy/wx); theta = theta/2; r = sqrtf(wx*wx+wy*wy); if(rnd < 0.5f) r = sqrt(r); else r = -sqrt(r); outX = r*cos(theta); outY = r*sin(theta); outZ = z; } bool IsValidParamA() const {return true;} bool IsValidParamB() const {return true;} };
算法中使用了兩個參數,修改參數值可以看到不同的圖形
最后發兩幅相關圖像:
Mandelbrot 圖像
Julia Sets圖像
……