返回列表 回复 发帖
精典M集:
未命名.jpg
没用调色板,按老办法扫一幅,自我感觉不错。
未命名.jpg
UF中的KochCurve代码,内含三个开关项,代码太长,解读困难,为降低难度,我将其代码精简为只整一个开关项,此精简后的代码在UF中运行后无误,我今晚试做了一下,结果不成功,扫出的图怪得很,大家帮忙看看,能否作成。榕坚兄有空时,看看,如何用GSP实现。
KochCurve {
init:
  z = #pixel
  x = real(z)
  y = imag(z)
  sq3 = sqrt(3)
  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
      
  elseif i > 2
    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 Curve1"
  helpfile = "sam-help/kochcurves.htm"
  helptopic = "kcurve"
  magn = 1.5
  center = (0.0002,0)
  maxiter = 50
}
这是UF中的效果:
未命名.jpg
23# 榕坚
问题丢在这,有兴趣时可弄弄。我昨晚算了一大屏数字,确如你所说,判断繁多弄昏了头,扫出的图十万八千里。又下面这个分形位于sam.ufm中的Sierpinski Triangle II,代码似比上楼的轻松了许多,整了一天,也整来不对劲。我也打算等脑壳清醒点,再来看看。
未命名.jpg
27# 榕坚
应该能分离,我今晚空了,办这个事。
28# 榕坚
按你的提示,将这段代码删掉后,UF中仍然显示此图,于是用GSP造,干了三四个钟点,不对,找原因,修改,往复了好几回,终于成了,扫出的图比UF中的图还要美!谢谢。
未命名.jpg
未命名.jpg
Sierpinski Triangle II.gsp (17.5 KB)
请给出27楼各图片所用的开关项及参数,这样好去除代码中的枝丫部分。
解压后,双击打开,图与上楼一样,但我按右边面板上的参数,打开重新打开 UF中的该范例文件,按你面板上的开关项,整了几次,怎么没有图形呢?
未命名.jpg
从你的文件来看,好象动了图片中的打钩部分与画圈部分,但我把reb系列中的文件调出按这弄,没图形,啥原因?
将前面的KochCurve曲线代码,删除了一段没用的代码,再浓缩成下面的代码:
KochCurve {
init:
  z = #pixel
  x = real(z)
  y = imag(z)
  sq3 = sqrt(3)
  bail =  false
  bail2 =false
  i = 1
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 (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

  elseif i > 2
    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)

    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
      elseif x> 0
        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 Curve1"
  helpfile = "sam-help/kochcurves.htm"
  helptopic = "kcurve"
  magn = 1.5
  center = (0.0002,0)
  maxiter = 50
}
作了几次,每次都不一样,查起来费劲,每干一次,扫出的图均不一样,怪。不过,倒是取得了进展,扫出的图有些地方可看到局部的科赫曲线影子。不知是不是我解读上面的代码,有误。
未命名.jpg
返回列表