返回列表 回复 发帖
139# 柳烟
全靠你的努力解释及112#的文件,我才知道怎么作,要说是智慧也是讨论出来的智慧,共同的成果。
这样更简单些

KochCurvecir {
init:
  z = #pixel
  int  n=0
loop:
    n = n+1
    arg = atan2(z)
    arg2 = 2*pi/3*round(3*arg/(2*pi))

    if n > 1 &&  arg2 == 0
      arg2 = 2*pi/3
    endif

   if  |z|>1
    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 = 20
  periodicity = 0

  param s
    caption = "Magnification step"
    default = 1.7
  endparam
}
将向老师的分区方法编为代码,如下:
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

}
这个分形,让人伤脑筋,值得思考的疑点太多。
131# 柳烟
整整一个下午,没有拿下这个方形雪花,主要是不知其中包含哪些仿射变换。但也有收获,终于明白了五星外围迭代不“干净”的原因。
这个扫描版五星外围迭代“干干净净”,和yimin0519老师给出的LS版外围迭代完全相同。这种进退格式LS的扫描,找准仿射变换是关键,而细节的雕琢还有赖于对各枝的合理分区。
New.jpg
五角星外围迭代3[扫描].gsp (14.83 KB)
New.jpg

KochCurvecir.gsp (10.04 KB)

New.jpg
New.jpg
147# changxde
非常漂亮。
想用点陷阱造4圆极限集,遇到一麻烦事,有三圆半径相等,这好办,q0就取为三个圆半径。问题是,中间一圆半径与众不同,要小点,不好办了。
研究点陷阱与麦比乌斯变换,扫一螺旋圆链:
New.jpg
麦比乌斯变换下的圆链.gsp (16.36 KB)
KochCurvecir {

init:
  z = #pixel
  float arg =0
  bool bail = false
  int i = 0
loop:
  i = i + 1
  if i > 1
    if |z| < 1
      bail = true
    endif
  arg = atan2(z)
  float arg2 = round(@n/(2*pi)*arg)*2*pi/@n
  if round(@n/(2*pi)*arg) == 0 && i > 2
    if arg > 0
      arg2 = 2*pi/@n
    else
      arg2 = -2*pi/@n
    endif
  endif
    z = z*exp(-1i*arg2)
    z = - @s*z + (1 +@s)
  endif
bailout:
  bail == false
default:
  title = "Circly Koch Curve"
  helpfile = "sam-help/kochcurves.htm"
  magn = .5
  center = (0.00021,0.0002)
  maxiter = 50
  periodicity = 0
  param n
    caption = "Magnification step"
    default = 4
  endparam
  param s
    caption = "Magnification step"
    default = 1.7
  endparam

}
UF中的代码十分高明,此代码中@n,当其为3时,即为前面的三边圆迭代,改为4,即可得4边圆迭代,相当方便。分区法造,@n为3时,分二区,最后对初值z进行变换,为4时,要分三区了?有点麻烦,UF中造一个文件,一劳永逸。不过,分区法也算是颇具创新精神的方法,解决了以前不能用扫描法解决的分形。
返回列表