返回列表 回复 发帖
UF中有一个与上楼类似的,放大后每个小M集肚子上的花纹一样,但代码简直搞不懂,只好望洋兴叹。
未命名.jpg
未命名.jpg
未命名1.jpg
未命名.jpg
请问这扫描版的希尔伯特曲线的迭代公式是什么?
64# xiaongxp


HilbertCurve(BOTH) {
; By Samuel Monnier, 2.9.00
init:
  z = 0
  int i = 0
  int ttype = 0
  float d = -1e20
loop:
  
final:
  
  z = #z/2
  z = abs(z) - (.5,.5)
  while i < @niter
    i = i + 1
    if ttype == 0
      if real(z) < 0 && imag(z) < 0
        z = 2*z + (.5,.5)
        z = -conj(z)
      elseif real(z) > 0 && imag(z) < 0
        z = 2*z + (-.5,.5)
        z = 1i*z
      elseif real(z) > 0 && imag(z) > 0
        z = 2*z + (-.5,-.5)
        z = 1i*conj(z)
      elseif real(z) < 0 && imag(z) > 0
        z = 2*z + (.5,-.5)
        ttype = 1
      endif
    else
      if real(z) < 0 && imag(z) < 0
        z = 2*z + (.5,.5)
        z = 1i*z
        ttype = 0
      elseif real(z) > 0 && imag(z) < 0
        z = 2*z + (-.5,.5)
        z = -1i*conj(z)
        ttype = 0
      elseif real(z) > 0 && imag(z) > 0
        z = 2*z + (-.5,-.5)
        ttype = 0
      elseif real(z) < 0 && imag(z) > 0
        z = 2*z + (.5,-.5)
        z = -conj(z)
        ttype = 0
      endif
    endif  
  endwhile
  
  if @style == 0
    z = z + (1,1)
    if ttype == 0
      if abs(real(z))-1 > d
        d = abs(real(z))-1
      endif
     if abs(imag(z))-1 > d
        d = abs(imag(z))-1
      endif
    else
      d = imag(z)-1
    endif
  elseif @style == 1 || @style == 2
    if ttype == 0
      d = cabs(z+(.5,.5))-.5
    else
      if @style == 1
        d = imag(z)
      else
        d = imag(z) - (real(z)^2-.25)^2*3
      endif
    endif
  elseif @style == 3
   
    if ttype == 0
      z = z + (.5,.5)
      d = abs(real(z)) + abs(imag(z)) - .5
    else
      ;d = imag(z)-.5
      d = abs(real(z)) - imag(z) - .5
    endif
  endif
   
  #index = abs(d)^@power
  
default:
  title = "Hilbert Curve"
  helpfile = "sam-help/hilbert.htm"
  
  param style
    caption = "Style"
    default = 0
    enum = "Square" "Round I" "Round II" "Diagonal"
  endparam  
  
  param power
    caption = "Thickness"
    default = .1
  endparam
  
  param niter
    caption = "Number of Iterations"
    default = 4
  endparam
}
扫描版的希尔伯特曲线与扫描版的谢尔兵斯基三角形一样,数学机理还不是很清楚。如何将迭代函数系统IFS,用扫描法整出,是一个有趣而意义深远的课题。象UF中扫描版的三圆的极限集,如何用画板实现,这些课题都难如哥德巴赫猜想,但又充满魅力。
上楼程序具体实现,详见榕坚兄大帖:分形奇图共评赏里,他修改柳烟的病态文件后的未命名文件里。
未命名.jpg
近一个月出外,没沾过电脑,如今归来,好多东西又搞忘了,又重新起摊。
未命名.jpg
1.jpg
Attractor Julia修正文件.gsp (17.87 KB)
上楼分形,很久以前作过,今天重新作,发现原来对UF的理解不透彻,有些问题.现将就UF中的参数,把上楼文件加点反演变换,扫图:
未命名.jpg
返回列表