返回列表 回复 发帖
我就是把Z与a0合并的,效果图没有两样。从算法看它是从a0为起始点开始迭代的。只是有一点不明白的是着色并没有用双曲类的,怎么逃逸区会有双曲型的效果。
接下去是这一个,同一方法。很有趣的,画板也可以由开关控制使图形有两种效果:inside on-off。

Fractal1.jpg (42.84 KB)

Fractal1.jpg

Fractal2.jpg (27.75 KB)

Fractal2.jpg

这一类分形的着色特点是只需要时间逃逸值就可以有非常好看的结果:

捕获331.JPG (33.97 KB)

捕获331.JPG

捕获332.JPG (63.21 KB)

捕获332.JPG

非常简单的代码,如何制作呢?扫描法制作Logistic:
lyap {
; By Samuel Monnier, 1999
init:
  z = #pixel
  r = real(z)
  x = .2
  i = 0
loop:
  i = i + 1
  x = r * x * (1 - x)
bailout:
  i < 200 || |x - imag(z)| > @resol
default:
  title = "Logistic"
  center = (2.5, 0.5)
  magn = .8
  maxiter = 250
  periodicity = 0
  method = multipass
  param resol
  caption = "Resolution"
  default = .0001
  endparam
}

Fractal1.jpg (11.64 KB)

Fractal1.jpg

UF中的范例:MandelLevels {
;Use Multipass or Onepass linear for drawing
init:
if @nothreads==true
  z=0
  aa=#pixel
else
  if real(#screenmax)/imag(#screenmax)>4/3
    float scale=3.0/imag(#screenmax)/#magn
  else
    float scale=4.0/real(#screenmax)/#magn
  endif
  bool flag=false
  bool flag2=false
  complex z=0
  complex a=#pixel
  complex aa=@col
  complex a1=a+scale
  complex a2=a-scale
  complex a3=a+flip(scale)
  complex a4=a-flip(scale)
  complex a5=a1+flip(scale)
  complex a6=a1-flip(scale)
  complex a7=a2+flip(scale)
  complex a8=a2-flip(scale)
  int max=#maxiter
  int c=0
  int ac=0
  repeat
    c=c+1
    z=z^@n+@f1(a)
  until (c==max)||(|z|>@bailout)
  if c==max
    flag=true
  endif
  ac=c
  if flag==false
    c=0
    z=0
    repeat
      c=c+1
      z=z^@n+@f1(a1)
    until (c==max)||(|z|>@bailout)
    if (c>ac)&&(c<max)
      flag2=true
      aa=a1
    endif
    c=0
    z=0
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a2)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a2
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a3)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a3
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a4)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a4
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a5)

      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)

        flag2=true
        aa=a5
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a6)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a6
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a7)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a7
      endif
      c=0
      z=0

    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a8)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a8
      endif
      c=0
      z=0
    endif
  endif
  if flag==true
    aa=#pixel
  endif
endif
  
loop:

  z = z^@n + @f1(aa)

bailout:
  |z|<@bailout
  
switch:
  type="JuliaLevels"
  seed=#pixel
  nothreads=nothreads
  f1=f1
  col=col
  n=n
  bailout=bailout

default:
  title = "MandelLevels"
  method=multipass
  periodicity=0
  center=(-0.5,0)

  
  func f1
    caption="Function"
    hint="Function for parameter c."
    default=ident()
  endfunc
  
  param nothreads
    caption="No threads"
    hint="The routine will work as a normal mandelbrot."
    default=false
  endparam
  
  param col
    caption="Colour"
    hint="Choose color between bands with geographic coords"
    default=(0.0,0.0)
  endparam
  
  param n
    caption="exponent"
    hint="2 is the normal Mandelbrot."
    default=(2,0)
  endparam
  
  param bailout
    caption="bailout"
    hint="bailout"
    default=4.0
  endparam
}
这可是M集的又一表现形式,可是做了一半下不去了。请高手出招:

Fractal1.jpg (47.84 KB)

Fractal1.jpg

主要是解读代码的算法很麻烦,如果有人翻译解读,用画板作应该不成问题。
好象掺入了扫描框大小、缩放比等算法。
16# 榕坚
可以通过限制势值来实现,只是要使曲线连续,得增大采样数,放慢扫描速度。就一点不如意,曲线粗细不匀。
M集2.4.2.jpg

M集2.4.2.gsp (14.71 KB)

16# 榕坚
我的作法还不尽如人意。这种粗细均匀的等高线作法,胡老师应该会。他发到cgpad的一个J集图,就是这样的效果。
19# xiaongxp


谢过向老师,学习了,等暑假再来消化。顺便问一下:在同一逃逸区内的点离边界的远近是否能用什么加以区别。
返回列表