返回列表 回复 发帖
这个封闭希尔伯特曲线如何迭代完成
http://www.inrm3d.cn/viewthread.php?tid=4412&extra=page%3D5 1.JPG
2.JPG
3.JPG
4.JPG
HilbertCurve(BOTH) {
; By Samuel Monnier, 2.9.00 简化

init:
      z = 0
  int i = 0
  int ttype = 0
  float d = -1
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


    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


  #index = abs(d)^@power

default:
  title = "Hilbert Curve"

  param power
    caption = "Thickness"
    default = .1
  endparam

  param niter
    caption = "Number of Iterations"
    default = 3
  endparam
}
多谢楼主慷慨分享好资料!
还有这个
Peano.jpg
未命名.JPG
以动态的初始元为陷阱制作了这个希尔伯特曲线的扫描算法
3.JPG
希尔伯特曲线扫描版(ChangXde).gsp (15.03 KB)
楼主的迭代技术精湛
10# 柳烟


增加一个素材: 图片1.png
16# xuefeiyang
增加这个曲线
四种皮亚诺希尔伯特曲线.gsp (25.38 KB)

可以计算一下,这类“3n ” 的曲线共有 2^9 (512) 种,去掉对称情况应有 256 种。
QQ图片20130605193845.gif 17# changxde
4# changxde
图二为什么会断线?
18# xuefeiyang

这个万字阵好。

万字阵.gsp (7.81 KB)

返回列表