返回列表 回复 发帖
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
这玩意好像很久很久以前弄过类似的,似乎原理差不多。
25# zwh2010


但柳老师想解释UF代码。
柳老师能否把reb系列中的indra's promise这个分形的每个开关项给分离出来,这个分形的代码太长了,因为他集成了很多个我们之前讨论的各种分形图:

Fractal1.jpg (69.31 KB)

Fractal1.jpg

Fractal2.jpg (64.12 KB)

Fractal2.jpg

Fractal3.jpg (39.94 KB)

Fractal3.jpg

Fractal4.jpg (26.64 KB)

Fractal4.jpg

Fractal5.jpg (31.01 KB)

Fractal5.jpg

Fractal6.jpg (47.84 KB)

Fractal6.jpg

24# 柳烟


其中这段代码是多余的:
if m1*x + m1 < y || -m1*x + m1 < y \
       || y < 0
    endif
27# 榕坚
应该能分离,我今晚空了,办这个事。
28# 榕坚
按你的提示,将这段代码删掉后,UF中仍然显示此图,于是用GSP造,干了三四个钟点,不对,找原因,修改,往复了好几回,终于成了,扫出的图比UF中的图还要美!谢谢。
未命名.jpg
未命名.jpg
Sierpinski Triangle II.gsp (17.5 KB)
返回列表