返回列表 回复 发帖
未命名.JPG
z+1/z的M集。此M集有些混沌,如果加大迭代次数与阈值,更加混沌,不明何故。
sin(z^2)的M集,很早以前做过,今重新思考之。M集应定位于一阶导数的零值点。求出一阶导数是:2*z*cos(z^2),其零值点是:z=0 或z=sqrt(π÷2),这是z的初始值定位。扫出的M集有差别,但不泛长得极标致的小M集。
定位于z=0扫一幅:
未命名1.jpg
另一种定位扫一幅:
未命名.JPG
e^z的标致小M集,好象找不着,一阶导数的零值点不存在。但是复合函数e^(z^2)的M集存在,将z的迭代初值定在原点。
未命名.JPG
未命名.JPG
sin(z)+c*cos(z)的J集,向老师早就作过,我初学分形时也练习过的一个例子。要造此M集,z应定位于Arctan(1/c)才行。这是它的M集:
未命名.JPG
我将#40的开关项1希氏曲线,在提取该开关时,误删了一段代码,并且还执行少了一句代码,结果与UF的该开关项一对照,不同如下:我这按原整理代码作出的是两个正三角形叠成的六角星形,然后再在边界线上长出牙孢成科赫雪花线,而UF中六角星形内是一片色,看不出是前后两等边三角形叠加成的。我重新整理代码,重作这开关项一,昨天带来不行,今天再重作,有进展,但仍然有问题,不知问题出在何处,大家作作看。
开关一的代码如下:
KochCurve {
; By Samuel Monnier, 2.1.00
init:
  z = #pixel

  x = real(z)
  y = imag(z)
  sq3 = sqrt(3)
  bool bail2 = false
  bool bail = false
  i = 0
loop:
  i = i + 1
   if i == 2
      arg = atan2(z)

      if (y + 1/sq3 > 0) && (sq3*x - y + 2/sq3 > 0) \
         && (sq3*x + y - 2/sq3 < 0)
        bail = true
      endif
      if (-y + 1/sq3 > 0) && (sq3*x + y + 2/sq3 > 0) \
         && (sq3*x - y - 2/sq3 < 0)
        bail = true
      endif

      if (arg > 5/6*pi) || (arg < -pi/2)
        z = z*exp(1i*4/3*pi)
      endif
      if (arg < pi/6) && (arg > -pi/2)
        z = z*exp(1i*2/3*pi)
      endif
      z=z-1/sq3*1i
  elseif i > 2

    z = z + @offset

    z = 3*z
    x = real(z)
    y = imag(z)

    if (y > 0) && (sq3*x - y + sq3 > 0) \
       && (sq3*x + y - sq3 < 0)
      bail2 = true
    endif

    z = z/3

    x = real(z)
    y = imag(z)

    if x < -1/3
      z = 3*z + 2

    elseif x > 1/3
      z = 3*z - 2
    else

      if x < 0
        z = z + 1/3
        z = z*exp(-1i*pi/3)
        z = 3*z - 1

      else
        z = z - 1/3
        z = z*exp(1i*pi/3)
        z = 3*z + 1
      endif
    endif

  endif


  if i >= 2
    z = z - @offset
  endif

bailout:
  bail == false && bail2 == false

default:
  title = "Koch Curve"
  helpfile = "sam-help/kochcurves.htm"
  helptopic = "kcurve"
  magn = 1.5
  center = (0.0002,0)
  maxiter = 50
  param region
    caption = "Trapped Region"
    default = 0
    enum = "Inside" "Outside" "Both"
  endparam
  param offset
    caption = "Offset"
    default = (0,0)
  endparam

}
我扫出的图如下:
未命名.jpg
又整了一遍,比#138楼整的差得更远,简直不象。
终于做出来了:
未命名.jpg
科赫雪花曲线扫描开关项1.gsp (32.31 KB)
开关项3的代码整理如下:
KochCurve {

init:
  z = #pixel
  x = real(z)
  y = imag(z)
  sq3 = sqrt(3)
  bool bail2 = false
  bool bail = false
  i = 0
loop:
  i = i + 1

  if i == 2

      arg = atan2(z)

      if (y + 1/sq3 > 0) && (sq3*x - y + 2/sq3 > 0) \
         && (sq3*x + y - 2/sq3 < 0)
        bail = true
      endif
      if (-y + 1/sq3 > 0) && (sq3*x + y + 2/sq3 > 0) \
         && (sq3*x - y - 2/sq3 < 0)
        bail = true
      endif

      if (arg > 5/6*pi) || (arg < -pi/2)
        z = z*exp(1i*4/3*pi)
      endif
      if (arg < pi/6) && (arg > -pi/2)
        z = z*exp(1i*2/3*pi)
      endif
      z = z - 1i*1/sq3

        zz = z
        z = #pixel

      if |x| > 1 || x/sq3 + y - 2*sq3/3 > 0 \
         || x/sq3 + y + 2*sq3/3 < 0 || x/sq3 \
         - y + 2*sq3/3 < 0 || x/sq3 - y - \
         2*sq3/3 > 0
        bail = true
      endif


      if (abs(arg) < pi/6)
        z = z*exp(-1i*pi/2)
      elseif (arg > pi/6) && (arg < pi/2)
        z = z*exp(-1i*5*pi/6)
      elseif (arg > pi/2) && (arg < 5*pi/6)
        z = z*exp(1i*5*pi/6)
      elseif (abs(arg) > 5*pi/6)
        z = z*exp(1i*pi/2)
      elseif (arg < -pi/6) && (arg > -pi/2)
        z = z*exp(-1i*pi/6)
      elseif (arg < -pi/2) && (arg > -5*pi/6)
        z = z*exp(1i*pi/6)
      endif
      z = z + 1i
      z = sq3*z


  elseif i > 2
      oldz = z
      z = zz
      zz = oldz
    z = 3*z
    x = real(z)
    y = imag(z)

    if (y > 0) && (sq3*x - y + sq3 > 0) \
       && (sq3*x + y - sq3 < 0)
      bail2 = true
    endif

    z = z/3

    x = real(z)
    y = imag(z)

    if x < -1/3
      z = 3*z + 2

    elseif x > 1/3
      z = 3*z - 2
    else

      if x < 0
        z = z + 1/3
        z = z*exp(-1i*pi/3)
        z = 3*z - 1

      else
        z = z - 1/3
        z = z*exp(1i*pi/3)
        z = 3*z + 1
      endif
    endif

  endif

bailout:
  bail == false && bail2 == false

default:
  title = "Koch Curve"
  helpfile = "sam-help/kochcurves.htm"
  helptopic = "kcurve"
  magn = 1.5
  center = (0.0002,0)
  maxiter = 50
}
我干了一两天,可能成了思维定式,一直查不出原因,我将图片及问题文件发上来,文件中的数据按代码顺序排列出,大家帮查查,究竟是那个判断出了问题。从扫出的图片看,只有两条边上的曲线正常,有几条边还没有。
未命名.jpg
开关顶3问题文件.gsp (45.27 KB)
说明:我抽出开关项3代码时,将原代码中的主宰伸缩变换的代码拿掉,以简单化。若要加进,造出此分形后,很容易加进伸缩功能。我在UF中看了,伸缩后的图形不好看,所以干脆拿掉,以使问题简单化。
搞了一天,最好成果:
未命名.jpg
数据太多,不明白究竟问题出在那。
返回列表