返回列表 回复 发帖
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
这段代码,理解起来有些费劲,可能我的解读有偏差。
未命名.jpg
未命名.jpg
干了几天,终于有了成果,源文件整理好后发,因算式多而混乱。
39# 榕坚
谢过榕兄支持并鼓励,并帮助。
文件整理好了,发于此,希提出批评并改进意见,使我进步。
Koch Curve(1).gsp (29.35 KB)
未命名.jpg
UF中科赫雪花的第二个开关项抽出后的代码如下:
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 |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
    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
    elseif (x < 0)&&(x>-1/3)

        z = z + 1/3
        z = z*exp(-1i*pi/3)
        z = 3*z - 1
    elseif (x > 0)&&(x<1/3)
        z = z - 1/3
        z = z*exp(1i*pi/3)
        z = 3*z + 1
    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

}
第一个开关项的科氏雪花作出后,这第二个开关项,是顺理成章的事,估计难度不是很大了。
43# 榕坚
UF中共有三个开关项,已发表的几张科赫雪花图片均是第一个开关项,第二个开关项代码41楼,GSP版的,还未生产出。
45# 榕坚
扫描法搞边界,怕有些困难,MJ集边界成熟算法dem法,涉及导数,这科赫雪花好象找不到一个复函数,这导数没法办。
这第二个开关项,整出的不对劲,检查了一遍,没发现错误,算式多,眼睛都看花了,干脆重新整一遍,结果对头了。
49# 榕坚
作得不错,这是用的什么办法弄出的边界呢
UF中的效果图是这样的:
Fractal2.jpg
用GSP扫一幅:
未命名.jpg
再扫一幅别样味道的:
未命名2.jpg
Koch Curve(二).gsp (35.88 KB)
52# 榕坚
谢谢!
返回列表