返回列表 回复 发帖
学习了前面向老师的几何版本的科赫雪花,感到向老师构思巧妙,用两个相似变换造出一支后,利用旋转变换得到另二支,省了很多劳力,显示了数学变换的神奇与妙用。我在其基础上搞了一个代数版的科赫雪花。
科赫雪花内迭代(代数版本).gsp (22.34 KB)
这文件是按下面两个图整的,一个是构造一支内的两个相似变换,另一个是旋转变换。大家在搞懂向老师文件制作机理之上,再结合我这两个草图,容易看懂我文件。
1.jpg
2.jpg
我文件中,控制整版雪花旋转的参数是An,旋转任意角度均无问题。
向老师,你文件中将第一支等腰三角形顶点放在其它位置,扫出的科赫曲线不正常了,好象这科赫 曲线只是固定于某一位置。这是截图。
无标题.jpg
11.jpg
22.jpg
33.jpg
这三张是UF中科赫曲线的截图,分别为另种科赫曲线当n=1,n=2,n=3的情况。向老师看看,此图若用画板造,是内迭代还是外迭代?你在IFS的制作方面,比我在行点。我想造出红三角形框住的部分,然后再旋转,不难得到,现有些茫然,我现思考用前面内外迭代用画板造出。
189# xiaongxp
非常漂亮!向老师技高一着,完成迅速,下载学习。到目前为止,我觉得UF中的几个科赫雪花,应该能破解了。前面向老师做的科赫雪花,也是UF效果之一。还有一效果我展示在这里,向老师空了,看看如何作。我原来按代码做成功过,现在关心的是代码究竟是什么意思,作了何种变换。前面圆科赫雪花,我将分区法与代码比较了一番,发现实际上就是分区法。
这是科赫雪花的第三效果。
无标题.jpg
向老师作得相当不错,最近向老师文件,对画板扫描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玩家知,烦告知,不胜感激。
将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
返回列表