返回列表 回复 发帖
问问向老师一个问题:#112楼的两枝,按代码用代数作法易作,当我学习你的扫描圆科黑雪花时,解读文件遇到困难,主要是算法理解上模糊,所以老是作不出来,请教一下此图作法大略。
126# xiaongxp
看了示意图,结合源文件,思路有点顺了。
今天研究向老师文件,越整越离谱,解读太难。现在能明白的,有二点,一是分区,好象文件中分了二个区。二是对点pixel旋转后的点产生STransf[1]或者STransf[2],而不是对pixel产生此二点。问题是是第三支如何通过旋转产生?现在是按分区法,先产生两枝都困难重重,向老师的提示应该是指出了关键所在,也看出向老师几何构图方面素养很深,这恰是我的短处,应加强练习与学习才是。
前面我那个GSP化后的UF代码,代码简单,但是红线部分的可视化意义仍令人费解:

KochCurvecir {

init:
  z = #pixel

loop:
  arg = atan2(z)
  if |z|>1
    if arg > 0
      arg2 = 2*pi/3
    else
      arg2 = -2*pi/3
    endif

    z = z*exp(-1i*arg2)
    z = - @s*z + (1 +@s)

    endif
bailout:
     |z|>1
default:
  title = "Circly Koch Curve"
  helpfile = "sam-help/kochcurves.htm"
  magn = .5
  center = (0.00021,0.0002)
  maxiter = 50
  periodicity = 0

  param s
    caption = "Magnification step"
    default = 1.7
  endparam

}
444.JPG
按代码作分形,不难,但是用向老师的方法做这个分形,由于这两句的可视化难理解,所以连这个两只的都没作出,今天全天学向老师文件,向老师热情点点拔,这里先谢过向老师无私。然仍未开窍,原因在我这边,只好慢慢领悟。这个分形解决后, UF中的好几个分形,都可用外围迭代法解决。
UF中的正方形科赫雪花,与前面那个三分支圆科赫雪花做法相类,用外迭代法与内迭代法,向老师可能能解决了。
正方形科赫雪花.JPG
正方形科赫雪花1.JPG
我想先作两枝再说。有些许进展,第二步,若点Z在分区线右边区域,将点z旋转-120度得点Z1,应该由Z1构造变换点,问题是由右下角小圆去构造,还是由左边的小圆构造?接着z位于左边区域,该旋转120度,得Z2,构造另一个变换点,也遇同样的问题。搞了几次,每次都不一样。扫的图发下:
未命名.JPG
UF 中的方法造起来容易,代码中的加红色二句无法破解。几何法与代数 法各有千秋,数无形,少直观,形无数,难入微。整了两天,越整问题越多了。
这个形用分区法怎么那样难,想先搞出两枝,做了三遍,遍遍不同样。打算先作出两只,结果越整越不成样,太累了,看来只有放弃了。
终于破译了UF代码的几何意义及分区法作二支的法子,三支估计顺理成章了,结合向老师前面分区法及在UF中研究,恍然大悟。在此确实要感谢向老师费心指点迷津。
138# xiaongxp
作的漂亮!这几天向老师的外迭代分形所发明的变换,确实充满了智慧,佩服。这样,UF中sam里的这分形可以说基本解决了。
将向老师的分区方法编为代码,如下:
KochCurvecir {

init:
  z = #pixel
  float arg = atan2(z)
  a=round(3/(2*pi)*arg)*2*pi/3
  z=z*exp(-1i*a)
loop:


  if |z|>1
    if imag(z) > 0
      arg2 = pi/3
    else
      arg2 = -pi/3
    endif

    z = z*exp(-1i*arg2)
    z =  @s*z -(1 +@s)

endif
bailout:
     |z|>1
default:
  title = "Circly Koch Curve"
  helpfile = "sam-help/kochcurves.htm"
  magn = .5
  center = (0.00021,0.0002)
  maxiter = 50
  periodicity = 0

  param s
    caption = "Magnification step"
    default = 1.7
  endparam

}
这个分形,让人伤脑筋,值得思考的疑点太多。
147# changxde
非常漂亮。
返回列表