返回列表 回复 发帖
190# 柳烟
迭代次数的奇偶不同,分别对应着割法与补法Koch雪花
Koch雪花[两个相似变换·外迭代].jpg
Koch雪花[两个相似变换·外迭代].gsp (11.17 KB)
向老师作得相当不错,最近向老师文件,对画板扫描IFS分形作出了重要贡献,容我慢慢消化。
Fractal2.png
UF中独缺这谢氏地毯,今用前面外迭代法,造一个。
代码如下:
Sierpinski正方形地毯** {

init:
  z = #pixel
  bool bail = false
loop:
    x = real(z)
    y = imag(z)
    if abs(x) <0.4&&abs(y) <0.4
      bail = true
    elseif y>0.4&& abs(x) <0.4
      z = 3*z  - 1i*2.4
   elseif y<-0.4&& abs(x) <0.4
      z = 3*z  + 1i*2.4
  elseif x>0.4&& abs(y) <0.4
      z = 3*z  -2.4
  elseif x<-0.4&& abs(y) <0.4
      z = 3*z  +2.4
  elseif x<-0.4&& y>0.4
      z = 3*z  +2.4-1i*2.4
elseif x>0.4&& y>0.4
      z = 3*z -2.4-1i*2.4
elseif x<-0.4&& y<-0.4
      z = 3*z +2.4+1i*2.4
elseif x>0.4&& y<-0.4
      z = 3*z -2.4+1i*2.4

    endif
bailout:
  bail == false
default:
  title = "Sierpinski正方形地毯"
  helpfile = "sam-help/various.htm"
  helptopic = "sierp2"
  center = (0,0.0)
}
UF中的勾股树:
1.jpg
附我编写的代码:
勾股数 {

init:
  z = #pixel
  float x = real(z)
  float y = imag(z)
  float a =1*pi/2
  float b=1*pi/2-1/2*a
  bool bail = false

loop:
    x = real(z)
    y = imag(z)
    if x>-0.3&& x<0.3&& y>-0.6&&y<0
      bail = true
    elseif x> cos(a)
      z = z-0.3
      z=z*exp(1i*b)+0.3
    z=1/cos(b)*(z-0.3)+0.3-1i*0.6
    elseif x<cos(a)
      z = z+0.3
      z=z*exp(-1i*(pi*0.5-b))-0.3
     z=1/sin(b)*(z+0.3)-0.3-1i*0.6

    endif
bailout:
  bail == false
default:
  title = "勾股树"
  helpfile = "sam-help/various.htm"
  helptopic = "sierp2"
  center = (0,0.5)
}
2.jpg
UF的产品,有些地方很毛躁,不知能不能想办法弄光滑些,如果有UF玩家知,烦告知,不胜感激。
用画板作点陷阱效果还可以
勾股树[外迭代+点陷阱]1.jpg 勾股树[外迭代+点陷阱]2.jpg
勾股树3.1[外迭代].jpg 勾股树3.2[外迭代].jpg
勾股树3[外迭代].gsp (11 KB)
将UF科赫雪花开关项1代码提取出来,再取代码中的一段落,看看究竟有何几何意义,想了一天,有了成果,于是得到开关项1UF中科赫雪花补法的又一种外迭代法:
KochCurve {
init:
  z = #pixel
  x = real(z)
  y = imag(z)
  sq3 = sqrt(3)
  bail2 =false
loop:
    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)

    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
      endif
    endif

bailout:
bail2 == false
default:
  title = "Koch Curve1"
  helpfile = "sam-help/kochcurves.htm"
  helptopic = "kcurve"
  magn = 1.5
  center = (0.0002,0)
  maxiter = 50
}
此代码已经GSP化了,与前面向老师的外迭代法原理惊人一致。这抽取的代码只是科赫雪花三支中的一支。
UF科赫雪花开关项1中补法代码1支(外迭代法).gsp (16.25 KB)
上楼文件的扫图:
2.gif
代码意义研究草图
2.png
1.gif
科赫雪花开关1中1支的旋转变换(外迭代法).gsp (18.75 KB)
附文件草图。 12.png
返回列表