Board logo

标题: 复分形征解 [打印本页]

作者: 榕坚    时间: 2010-6-9 22:04     标题: 复分形征解

今天高考结束后,想从UF中找一个有趣的范例来做,可是到半中间给卡住了。如何从半中间开始迭代呢?
Meet100_1_0 {
; Generic Mandelbrot set
init:
  complex u = 1/#pixel - 1
  complex uu = sqr(u)
  complex u3i = 1/((2*u - 3)*uu + 1)
  complex s = ((2*uu - 3*u)*uu + 1.5)*u3i
  complex p = sqrt((9 - 6*u)*u3i)
  complex a3 = 0.3333333333333333333
  complex a2 = -0.5*p
  complex a0 = s*p
  z = a0
loop:
  z = (a3*z + a2)*sqr(z) + a0
bailout:
  |z| <= @bailout
default:
  title = "Meet100_1_0"
  center = (0, 0)
  param start
    caption = "Starting point"
    default = (1,0)
    hint = "Perturbation. Use (1,0) for the standard Mandelbrot set."
  endparam
  param power
    caption = "Power"
    default = (1,0)

    hint = "This defines the power of the Mandelbrot set. Use (1,0) \
            for the standard Mandelbrot set."
  endparam
  param bailout
    caption = "Bailout value"
    default = 128.0
    min = 1.0
    hint = "Defines how soon an orbit bails out, i.e. doesn't belong \

            to the Mandelbrot set anymore."
  endparam
switch:
  type = "Jeet100_1_0"
  seed = #pixel
  power = power
  bailout = bailout
}
效果图:

图片附件: Fractal1.jpg (2010-6-9 22:04, 170.82 KB) / 下载次数 1783
http://www.inrm3d.cn/attachment.php?aid=5124&k=986464e3cedb5ec534a740ed43f9da4b&t=1716013457&sid=BMBUty


作者: 分形几何    时间: 2010-6-9 23:05

今天高考结束后,想从UF中找一个有趣的范例来做,可是到半中间给卡住了。如何从半中间开始迭代呢?
表述不清。
作者: 柳烟    时间: 2010-6-9 23:11

#pixel ,我的理解是C,对不?前面Sqr是平方记号,Sqrt是平方根的记号吗?我在软件里怎么没发现这个范例呢?
作者: 榕坚    时间: 2010-6-10 08:54

有啊,在Public\tvc.ufm中的Meet100_1_0。你理解的没错,#pixel应该就是C,就是对其着色的点。sqr为平方,这之前做过。sqrt是开方,取其一个平方根。如果取另一个平方根估计整个图形结构应该一样。只是位置上会发生一些变化。这里不好理解的是Z0,我不懂得该如何处置。
作者: 榕坚    时间: 2010-6-10 11:26

这是它的放大图,很是漂亮:

图片附件: Fractal1.jpg (2010-6-10 11:26, 87.28 KB) / 下载次数 2063
http://www.inrm3d.cn/attachment.php?aid=5132&k=3b7ef5ae22c21179b276fd13daa5337b&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-6-10 16:21

此分形我已作出,随后就发.最后你将Z定位在原点附近即可。
作者: 榕坚    时间: 2010-6-10 16:31

6# 柳烟


说明的算法误导了吗?
param start
    caption = "Starting point"
    default = (1,0)
按此说法Z0应定位在(1,0)点。
作者: 榕坚    时间: 2010-6-10 17:00

明白了,把Z与a0合并。漂亮:

图片附件: 捕获323.JPG (2010-6-10 17:00, 35.72 KB) / 下载次数 1808
http://www.inrm3d.cn/attachment.php?aid=5134&k=a6250336f4e34e17ec98cd24b6da1509&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-10 17:17

迫不急待地把它放大:

图片附件: 捕获327.JPG (2010-6-10 17:17, 90.13 KB) / 下载次数 2050
http://www.inrm3d.cn/attachment.php?aid=5135&k=8223be60357fffe4e98e948dd171683c&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-6-10 17:29

Z与a0合并不成,将Z定位在原点附近即可。
作者: 榕坚    时间: 2010-6-10 17:58

我就是把Z与a0合并的,效果图没有两样。从算法看它是从a0为起始点开始迭代的。只是有一点不明白的是着色并没有用双曲类的,怎么逃逸区会有双曲型的效果。
作者: 榕坚    时间: 2010-6-10 18:04

接下去是这一个,同一方法。很有趣的,画板也可以由开关控制使图形有两种效果:inside on-off。

图片附件: Fractal1.jpg (2010-6-10 18:04, 42.84 KB) / 下载次数 1147
http://www.inrm3d.cn/attachment.php?aid=5137&k=ffaf5437a119372915b8f4cc2265db03&t=1716013457&sid=BMBUty



图片附件: Fractal2.jpg (2010-6-10 18:04, 27.75 KB) / 下载次数 1133
http://www.inrm3d.cn/attachment.php?aid=5138&k=2f8bf25fcb77d7346c3261478a7b2404&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-11 11:09

这一类分形的着色特点是只需要时间逃逸值就可以有非常好看的结果:

图片附件: 捕获331.JPG (2010-6-11 11:09, 33.97 KB) / 下载次数 1137
http://www.inrm3d.cn/attachment.php?aid=5150&k=5a7f88f4fc4fb8fe39be47b6d9f16b02&t=1716013457&sid=BMBUty



图片附件: 捕获332.JPG (2010-6-11 11:26, 63.21 KB) / 下载次数 1297
http://www.inrm3d.cn/attachment.php?aid=5153&k=6081c8e5691d7baaf1078fb9e962eef8&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-14 09:02

非常简单的代码,如何制作呢?扫描法制作Logistic:
lyap {
; By Samuel Monnier, 1999
init:
  z = #pixel
  r = real(z)
  x = .2
  i = 0
loop:
  i = i + 1
  x = r * x * (1 - x)
bailout:
  i < 200 || |x - imag(z)| > @resol
default:
  title = "Logistic"
  center = (2.5, 0.5)
  magn = .8
  maxiter = 250
  periodicity = 0
  method = multipass
  param resol
  caption = "Resolution"
  default = .0001
  endparam
}

图片附件: Fractal1.jpg (2010-6-14 09:02, 11.64 KB) / 下载次数 1094
http://www.inrm3d.cn/attachment.php?aid=5205&k=a3ad7149aa729e6757b0b61ca210e2fb&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-15 10:08

UF中的范例:MandelLevels {
;Use Multipass or Onepass linear for drawing
init:
if @nothreads==true
  z=0
  aa=#pixel
else
  if real(#screenmax)/imag(#screenmax)>4/3
    float scale=3.0/imag(#screenmax)/#magn
  else
    float scale=4.0/real(#screenmax)/#magn
  endif
  bool flag=false
  bool flag2=false
  complex z=0
  complex a=#pixel
  complex aa=@col
  complex a1=a+scale
  complex a2=a-scale
  complex a3=a+flip(scale)
  complex a4=a-flip(scale)
  complex a5=a1+flip(scale)
  complex a6=a1-flip(scale)
  complex a7=a2+flip(scale)
  complex a8=a2-flip(scale)
  int max=#maxiter
  int c=0
  int ac=0
  repeat
    c=c+1
    z=z^@n+@f1(a)
  until (c==max)||(|z|>@bailout)
  if c==max
    flag=true
  endif
  ac=c
  if flag==false
    c=0
    z=0
    repeat
      c=c+1
      z=z^@n+@f1(a1)
    until (c==max)||(|z|>@bailout)
    if (c>ac)&&(c<max)
      flag2=true
      aa=a1
    endif
    c=0
    z=0
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a2)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a2
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a3)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a3
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a4)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a4
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a5)

      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)

        flag2=true
        aa=a5
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a6)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a6
      endif
      c=0
      z=0
    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a7)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a7
      endif
      c=0
      z=0

    endif
    if flag2==false
      repeat
        c=c+1
        z=z^@n+@f1(a8)
      until (c==max)||(|z|>@bailout)
      if (c>ac)&&(c<max)
        flag2=true
        aa=a8
      endif
      c=0
      z=0
    endif
  endif
  if flag==true
    aa=#pixel
  endif
endif
  
loop:

  z = z^@n + @f1(aa)

bailout:
  |z|<@bailout
  
switch:
  type="JuliaLevels"
  seed=#pixel
  nothreads=nothreads
  f1=f1
  col=col
  n=n
  bailout=bailout

default:
  title = "MandelLevels"
  method=multipass
  periodicity=0
  center=(-0.5,0)

  
  func f1
    caption="Function"
    hint="Function for parameter c."
    default=ident()
  endfunc
  
  param nothreads
    caption="No threads"
    hint="The routine will work as a normal mandelbrot."
    default=false
  endparam
  
  param col
    caption="Colour"
    hint="Choose color between bands with geographic coords"
    default=(0.0,0.0)
  endparam
  
  param n
    caption="exponent"
    hint="2 is the normal Mandelbrot."
    default=(2,0)
  endparam
  
  param bailout
    caption="bailout"
    hint="bailout"
    default=4.0
  endparam
}
这可是M集的又一表现形式,可是做了一半下不去了。请高手出招:

图片附件: Fractal1.jpg (2010-6-15 10:08, 47.84 KB) / 下载次数 1113
http://www.inrm3d.cn/attachment.php?aid=5226&k=ead26bcc3c1d7e0f7d466d54ad827f4d&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-6-15 10:12

主要是解读代码的算法很麻烦,如果有人翻译解读,用画板作应该不成问题。
作者: 榕坚    时间: 2010-6-15 11:02

好象掺入了扫描框大小、缩放比等算法。
作者: xiaongxp    时间: 2010-6-15 13:07

16# 榕坚
可以通过限制势值来实现,只是要使曲线连续,得增大采样数,放慢扫描速度。就一点不如意,曲线粗细不匀。
M集2.4.2.jpg

图片附件: M集2.4.2.jpg (2010-6-16 10:41, 34.37 KB) / 下载次数 1487
http://www.inrm3d.cn/attachment.php?aid=5261&k=6d89080e03cc8755c336c2148950fd57&t=1716013457&sid=BMBUty



附件: M集2.4.2.gsp (2010-6-15 19:20, 14.71 KB) / 下载次数 2219
http://www.inrm3d.cn/attachment.php?aid=5262&k=ff2bc8eacfde0dacfb37ab1402550332&t=1716013457&sid=BMBUty
作者: xiaongxp    时间: 2010-6-15 19:50

16# 榕坚
我的作法还不尽如人意。这种粗细均匀的等高线作法,胡老师应该会。他发到cgpad的一个J集图,就是这样的效果。
作者: 榕坚    时间: 2010-6-16 10:31

19# xiaongxp


谢过向老师,学习了,等暑假再来消化。顺便问一下:在同一逃逸区内的点离边界的远近是否能用什么加以区别。
作者: xiaongxp    时间: 2010-6-16 15:41

“在同一逃逸区内的点离边界的远近是否能用什么加以区别。”是指着色吗?
一般来讲,每个逃逸区内的点按势值(等高线)具有相同的遍历性,所以我作的色因子常带0.5(et±log(abs(em))) ,以0.5et区别不同逃逸区,以±0.5log(abs(em))) 来反映同一逃逸区的明暗过渡效果。这种做法对经典M集和经典J集很有效。但对其他复分形,要协调好两者的系数才能达到好的视觉效果,这是一个需要耐心、充满期待、成后无比欣慰的过程。我们都非常享受这一过程,不痴迷复分形的人是不能理解个中乐趣、享受到这种快乐的。
作者: 榕坚    时间: 2010-6-16 16:10

20# xiaongxp


我之前也是采取类似做法,但没办法耐心扫描就放弃了。因为它要设置较慢的速度进行扫描才会使那些线相对连续。等过一阵子再来研究一下UF的做法。谢谢向老师。
作者: 榕坚    时间: 2010-6-17 08:48

这个奇怪的UF中的范例,我做了两遍都与结果相去甚远:
Critper3 {
; Generic Mandelbrot set
init:
  complex s = #pixel
  ;s=1-1/s
  ;s=1-1/s
  complex a3 = 0.3333333333333333333
  complex pp = (1/(s - s*s) - s)*3/s
  complex a0 = sqrt(pp)
  complex a2 = a0*((s - 1)/pp - a3)
  z = -2*a2
loop:
  z = (a3*z + a2)*sqr(z) + a0
bailout:
  |z| <= @bailout
default:
  title = "Critper3"
  center = (0, 0)
  param start
    caption = "Starting point"
    default = (1,0)
    hint = "Perturbation. Use (1,0) for the standard Mandelbrot set."
  endparam
  param power
    caption = "Power"
    default = (1,0)
    hint = "This defines the power of the Mandelbrot set. Use (1,0) \
            for the standard Mandelbrot set."
  endparam
  param bailout
    caption = "Bailout value"
    default = 128.0
    min = 1.0
    hint = "Defines how soon an orbit bails out, i.e. doesn't belong \
            to the Mandelbrot set anymore."
  endparam
switch:
  type = "Jritper3"
  seed = #pixel
  power = power
  bailout = bailout
}

图片附件: Fractal1.jpg (2010-6-17 08:48, 56.39 KB) / 下载次数 1250
http://www.inrm3d.cn/attachment.php?aid=5297&k=5c8f9b77e215097e5ea18e03fa1e749e&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-6-17 16:19

我弄出来与榕兄的帖图相近了,我的图与原图差了180度,.但与原图有点差别,仔细检查了计算,应该说没有问题.我仍不明原因何在.我作此图时,先是对c着色,再合并z,结果作出的图乱糟糟,我又采取先合并z,再对c进行着色,结果得下图:

图片附件: 未命名.JPG (2010-6-17 16:19, 56.61 KB) / 下载次数 1127
http://www.inrm3d.cn/attachment.php?aid=5311&k=812602967e22e22f5dc5467b472eafb8&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-17 18:05

真奇怪了,这个分形我破天荒的做了四次,每次得到的结果都不一样,第一次因为代码中s=s-1/s前有分号,而且是灰色的,我以为是注释(而且我试着把原软件中s=s-1/s删掉、保存。再打开结果没变。)就不算,后面算一次,算两次,可结果还是不行,晚上再来。就不信做不出来。
作者: 柳烟    时间: 2010-6-17 20:31

我又干了一遍,结果与前次效果一样.
我把阔值搞得无比大后,看起来还不错,效果:
未命名2.JPG

图片附件: 未命名2.JPG (2010-6-17 20:31, 56.89 KB) / 下载次数 1165
http://www.inrm3d.cn/attachment.php?aid=5312&k=7815030fe75b3ee82e974d878a9e6cfd&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-17 20:39

第五次了,真是气遍我了下面两幅是s=1-1/s算一遍与算两遍的结果:

图片附件: 捕获348.JPG (2010-6-17 20:39, 36.86 KB) / 下载次数 1068
http://www.inrm3d.cn/attachment.php?aid=5313&k=b48eedae64eed404f21a8309e53e9d86&t=1716013457&sid=BMBUty



图片附件: 捕获349.JPG (2010-6-17 20:39, 29.13 KB) / 下载次数 1083
http://www.inrm3d.cn/attachment.php?aid=5314&k=0d9440a6c5b2939e6f77e7f344b12101&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-17 21:19

原来这是M集的变异:

图片附件: Fractal1.jpg (2010-6-17 21:19, 27.65 KB) / 下载次数 1071
http://www.inrm3d.cn/attachment.php?aid=5315&k=a7cee8fd523a4f54fce0f3cb1e33ffa6&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-17 22:03

柳老师不要再试了,我重新跳过s=1-1/s做出来的形状与它一样,但是可能是软件有经过特殊的处理才会有那个结果。其实我第一次就做对了。只是结果与它不一样,外观是M集的外观。怪不得我删掉那两行没有影响图形。
作者: 柳烟    时间: 2010-6-17 22:48

Fractal1.jpg
这个分形也是累我干了好几次。
complex st = #pixel
  if @insout
    st = 1/st
  endif
  complex sqst = sqrt(sqr(st) - 0.33333333333333333333)
  complex s = sqst + st
  complex t = sqst - st
  complex a3 = 0.33333333333333333333
  complex a2 = -0.5*(s + t)
  complex a1 = -0.33333333333333333333
  complex q = ((a3*s + a2)*s + a1)*s
  complex r = ((a3*t + a2)*t + a1)*t
  complex pn2 = 2/(q - r)
  complex u = 1 - q*pn2
  complex p = sqrt(pn2)
  a2 = a2*p
  a1 = a1*pn2
  complex a0 = u*p
  z = p
loop:
  z = ((a3*z + a2)*z + a1)*z + a0
每次得到的结果是:
未命名.JPG
就是得不到UF中的帖图。

图片附件: Fractal1.jpg (2010-6-17 22:48, 71.44 KB) / 下载次数 1149
http://www.inrm3d.cn/attachment.php?aid=5317&k=90986fec585d35bf5c3256b5ce25e2d0&t=1716013457&sid=BMBUty



图片附件: 未命名.JPG (2010-6-17 22:48, 35.23 KB) / 下载次数 1035
http://www.inrm3d.cn/attachment.php?aid=5318&k=4a8ca5bdeab5bcbfe6139958211df048&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-6-18 13:57

31# 柳烟


这个分形你已经做的非常成功了。你只要跳过这一段代码最后的图形就跟它一样了:
if @insout
    st = 1/st
  endif
它是一个开关项,可以选择两个图形中的某一个。其中一个就是你做出来的图形。
作者: 榕坚    时间: 2010-6-18 22:06

一点小收获:

图片附件: 捕获353.JPG (2010-6-18 22:06, 100.63 KB) / 下载次数 1378
http://www.inrm3d.cn/attachment.php?aid=5346&k=32d44f3320b3f2b3b6277d3c35d04305&t=1716013457&sid=BMBUty



图片附件: 捕获352.JPG (2010-6-18 22:06, 83.29 KB) / 下载次数 1373
http://www.inrm3d.cn/attachment.php?aid=5347&k=e4427fb22f974f88a425f182f1d09d17&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-6-18 23:23

感谢榕坚兄的点醒,已经作出来了,整了两个按钮开关,以控制扫出这两个不同的M集。
未命名.JPG
未命名1.JPG
Meet10_10_0一.gsp (39.62 KB)

图片附件: 未命名.JPG (2010-6-18 23:23, 32.6 KB) / 下载次数 1152
http://www.inrm3d.cn/attachment.php?aid=5348&k=3d0e8beb9425a381e2e9bb2bd006f60f&t=1716013457&sid=BMBUty



图片附件: 未命名1.JPG (2010-6-18 23:35, 41.36 KB) / 下载次数 1143
http://www.inrm3d.cn/attachment.php?aid=5350&k=4a49dfd4c520755f553f19446b0f90d6&t=1716013457&sid=BMBUty



附件: Meet10_10_0一.gsp (2010-6-19 00:43, 39.62 KB) / 下载次数 2258
http://www.inrm3d.cn/attachment.php?aid=5353&k=a4346877de2d8d4b9c8a15f09adfcc69&t=1716013457&sid=BMBUty
作者: 榕坚    时间: 2010-9-3 11:04

这个牛顿迭代很吸引眼球,有兴趣的不妨一试:
IPolNewtonJulia {
init:
  complex z=#pixel
  complex zold=0
  complex t=0
  complex u=0
  complex v=0

loop:
  zold=z
  if zold==0
    zold=1e-20
  endif
  if @formula==0
    t=zold^@n1
    u=zold^@n0
    z=zold-(u-@r*(1+t)^@n2)/(u/zold*(@n0-@n2*@n1*t/(1+t)))+@pixfu(@seed)
  elseif @formula==1
    t=zold^@n1
    u=zold^@n0
    v=1+sin(t)
    z=zold-(sinh(u/v^@n2)-@r)/(cosh(u/zold*(@n0-@n2*@n1*zold*cos(t)/v)/v^@n2))+@pixfu(@seed)
  elseif @formula==2
    t=zold^@n1
    u=zold^@n0
    v=log(u)
    z=zold-(v-@r*(1+sin(t))^@n2)/(@n0/zold-(@n1*@n2*t/zold*v*cos(t))/(1+sin(t))^@n2) \
      +@pixfu(@seed)
  elseif @formula==3
    t=zold^@n1
    u=zold^@n0
    v=1+log(t)
    z=zold-(sin(u)-@r*v^@n2)/(@n0*u/zold*cos(u)-(@n1*@n2/zold*sin(u)/v))+@pixfu(@seed)
  endif
bailout:
|z-zold|>@bailout
  
switch:
  type="IPolNewton"
  pixfu=pixfu
  bailout=bailout
  init=init
  zinit=zinit
  n0=n0
  n1=n1
  n2=n2
  r=r
  formula=formula
  
default:
  title = "IPolNewtonJulia"
  periodicity=0
  method=multipass
  angle=90.0
  
  

  func pixfu
    caption="Pix-func"
    default=ident()
  endfunc
  
  param formula
    enum="z^n0/(1+z^n1)^n2" "sinh(z/(1+sin(z)))" "ln(z)/(1+sin(z))" "sin(z)/(1+ln(z))"
    default=0
  endparam
  
  param seed
    caption="Seed"
    default=(0,0)
  endparam
  
  param n0
    caption="z^n0"
    default=(2,0)
  endparam

  
  param n1
    caption="1+z^n1"
    default=(-3,0)
  endparam
  
  param n2
    caption="(1+z)^n2"
    default=(3,0)
  endparam
  
  param r
    caption="root"
    default=(1,0)
  endparam

  param init
    enum="auto" "z-init" "pixel-init"
    default=0
    hint="z initiates by the actual pixelvalue."
  endparam
  
  param zinit
    caption="z-init"
    default=(1.0,0)
  endparam
  
  param bailout
    caption="bailout"
    default=1E-5
  endparam
}

图片附件: Fractal1.jpg (2010-9-3 11:04, 91.33 KB) / 下载次数 1430
http://www.inrm3d.cn/attachment.php?aid=6984&k=4a4161ed7e1e842f15e952c05ab67e0c&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-3 20:28

不知道什么原因精彩的地方数据溢出,整体形状应该是正确的:

图片附件: 捕获.JPG (2010-9-3 20:28, 48.95 KB) / 下载次数 1205
http://www.inrm3d.cn/attachment.php?aid=6992&k=ac91cd52981f5df62d1ad8288060a0ef&t=1716013457&sid=BMBUty


作者: xiaongxp    时间: 2010-9-3 23:50

36# 榕坚
试试增大阈半径能行吗。
作者: 榕坚    时间: 2010-9-4 08:35

37# xiaongxp


增大、减小都不行。好象有两类溢出情况:一种是值太小了指数运算无意义,一种是值太大了溢出。
作者: 榕坚    时间: 2010-9-4 11:11

再一个Uf难题,如何把两种分形合并在一个画面上(两个分形的空白逃逸区内分别画另一个分形):
JD-SG-04 {
; Sylvie Gallet [101324,3444], 1996
          ; use p1 and p2 to adjust the inverted Mandel
          ; modified for UF multi-layer capability by
          ;   Erik Reckase, March 2000
init:
  IF (@p3==1)
    z=c = pixel
  ELSEIF (@p3==0)
    z=c = @p1/(pixel + @p2)
  ELSE
    IF (whitesq)
      z=c = pixel
    ELSE
      z=c = @p1/(pixel + @p2)
    ENDIF
  ENDIF
loop:
  z = z*z + c
bailout:
  |z| < 4
default:
  title = "JD-SG-04"
  periodicity = 0
  maxiter = 500
  magn = 1
  center = (0,0)
  method = multipass
  param p1
    caption = "2nd Mandel Scalar"
    default = (-1,0)
    hint = "Controls the rotation and scale of the second \
            mandel. If multi-layer ,only affects Layer Option '1'"
  endparam
  param p2
    caption = "2nd Mandel Const"
    default = (0,0)
    hint = "Controls the X/Y position of the second mandel. \
            If multi-layer, only affects Layer Option '1'"
  endparam
  param p3
    caption = "Layer Option"
    enum = "Option 1" "Option 2" "Original"
    default = 2
    hint = "Options 1 and 2 are the two separate layers of this \
            formula.  The 'Original' option uses the original \
            PHC formula."
  endparam
}

图片附件: Fractal1.jpg (2010-9-4 11:11, 76.65 KB) / 下载次数 1358
http://www.inrm3d.cn/attachment.php?aid=6998&k=ce544c4604b2b9e646a9698c1b5666f5&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-4 11:22

这是我做的结果,两个相处的并不十分融洽:

图片附件: 捕获502.JPG (2010-9-4 11:22, 33.51 KB) / 下载次数 1192
http://www.inrm3d.cn/attachment.php?aid=6999&k=9a48b980f54f6eac60eee78e960b9902&t=1716013457&sid=BMBUty


作者: xiaongxp    时间: 2010-9-5 00:10

40# 榕坚
实现了C集与C^-1集的嵌入,榕老师太伟大了!能分享源文件吗?
作者: 榕坚    时间: 2010-9-5 09:15

41# xiaongxp


怎么不可以,过渡得不是很好。有待进一步完善:

附件: 05.gsp (2010-9-5 09:15, 14.82 KB) / 下载次数 1921
http://www.inrm3d.cn/attachment.php?aid=7012&k=aed42df6e1f0608a559281ca2a30469c&t=1716013457&sid=BMBUty
作者: xiaongxp    时间: 2010-9-5 15:12

42# 榕坚
谢谢榕老师。又要伤一番脑筋才能理解。
作者: 榕坚    时间: 2010-9-5 17:51

这个牛顿的分形中g(x)=z^5+2*z^3+3*z^3-4*z^3-5*z-6的解析式有点怪(同类项为什么不合并呢),柳老师试过吗(之前你提供的网站上有)?

图片附件: 捕获.JPG (2010-9-5 17:51, 62.83 KB) / 下载次数 1112
http://www.inrm3d.cn/attachment.php?aid=7019&k=0ad8c7415c4c6b2ce1f729529dbbf443&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-5 18:49

上楼榕老师说的分形,我当时把指数看成递降的去了,结果造了一个分形Z^5+2z^4-3^3-4z^3-5z-6,发在我的帖子中。造出来后,发现花色差不多,但是我放大后就找不到与此图差不多的。按理合并不合并应该差不多,我试试看。
作者: 柳烟    时间: 2010-9-5 19:10

我怀疑是不是网站的人把多项式的指数整错了,我原来按指数依次递减,造出的分形与帖图花样相同,但是今天按合并后再做,结果与帖图八杆子不相干。我估计我在 赏网上分形,试作之 帖子中造的就是榕老师说的这个复函数分形。
我试了,是网站上把指数弄错了,我作的图能扫出帖图来。
未命名1.JPG
N集一(放大).gsp (31.27 KB)

附件: N集一(放大).gsp (2010-9-5 22:32, 31.27 KB) / 下载次数 2486
http://www.inrm3d.cn/attachment.php?aid=7025&k=3189711fc94635fce6194c9fb6cd4a18&t=1716013457&sid=BMBUty

图片附件: 未命名1.JPG (2010-9-5 22:32, 42.34 KB) / 下载次数 991
http://www.inrm3d.cn/attachment.php?aid=7026&k=7141d39110ed29b73d61af413d94479a&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-5 22:12

46# 柳烟


没错,应该是网站的失误,颜色没有认真调(要五种颜色)。

图片附件: 捕获.JPG (2010-9-5 22:12, 39.32 KB) / 下载次数 1043
http://www.inrm3d.cn/attachment.php?aid=7023&k=ed79c2b50ca0a5d871b30c6fa3aad32f&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-6 08:34

把五种颜色加上:

图片附件: 捕获506.JPG (2010-9-6 08:34, 43.15 KB) / 下载次数 1046
http://www.inrm3d.cn/attachment.php?aid=7027&k=5c493642045f9851f3fc0bd54eb3a476&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-6 15:29

未命名1.JPG
不知何故,我扫出的图与帖图恰好旋转了90度。
IPolNewtonJulia.gsp (23.12 KB)

图片附件: 未命名1.JPG (2010-9-6 15:29, 41.11 KB) / 下载次数 1030
http://www.inrm3d.cn/attachment.php?aid=7034&k=d4312ff788f1b380c128e5e6e40a2c76&t=1716013457&sid=BMBUty



附件: IPolNewtonJulia.gsp (2010-9-6 15:36, 23.12 KB) / 下载次数 2485
http://www.inrm3d.cn/attachment.php?aid=7035&k=577a29d6af7c2adcc9130b16cecd734f&t=1716013457&sid=BMBUty
作者: 榕坚    时间: 2010-9-6 15:31

49# 柳烟


很好,你只要做个旋转90度的变换就可以了。能说说是如何处理逃逸条件吗?
作者: 柳烟    时间: 2010-9-6 15:36

我是按代码中翻译出的复函数:z-[z^2(1+z^-3)-(1+z^-3)^4]/[2z(1+z^-3)+9z^-2]造J集,逃逸条件按普通牛集的逃逸条件进行即可。
作者: 榕坚    时间: 2010-9-6 16:28

51# 柳烟


我可能是把它的三个模式都在一个画板内来完成造成冲突了。这个分形的式子太复杂了我都没耐心重做了。
作者: 柳烟    时间: 2010-9-6 17:28

52# 榕坚
确实如此,表达式复杂,造出来后,扫描速度相当慢。
作者: 榕坚    时间: 2010-9-6 18:58

用柳老师的文件稍加修改:

图片附件: 捕获11.JPG (2010-9-6 18:58, 47.08 KB) / 下载次数 978
http://www.inrm3d.cn/attachment.php?aid=7041&k=f3e32d369491dac1ae9d9c9520a198dd&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-6 21:06

奇怪了,我按照同样的设定重做一遍。怎么有一些地方也出现了数据溢出。

图片附件: 捕获12.JPG (2010-9-6 21:06, 49.01 KB) / 下载次数 974
http://www.inrm3d.cn/attachment.php?aid=7046&k=1d236dfa8d1033a2a2e7a3acf0ee2fab&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-6 21:38

55# 榕坚
是不是作色参数使其溢出呢?
作者: 榕坚    时间: 2010-9-6 21:44

56# 柳烟


不是,是出现了大数值溢出。可以设定上限但那一块的颜色不一致。
作者: 榕坚    时间: 2010-9-15 17:52

这是UF中一个当型循环比较简单的范例,可一直没办法用几何画板来实现,请大家一起想想办法。如何使几何画板也能实现这类分形。
Lacunary1_M {
; iteration of f(z) = c + z + z^2 + z^4 + ... + z^(2^n)

init:
    if (@degree==1)
        z = -0.5
    elseif (@degree==2)
        z = -0.38545849852963
    elseif (@degree==3)
        z = -0.3828986970212
    else
        z = -0.38289643077689
    endif
loop:
    complex summand = z
    int k=0
    z = z+#pixel
    while (k<@degree)
        summand = sqr(summand)
        z = z + summand
        k = k+1
    endwhile

bailout:
    |z| < @bailout

default:
  title = "Lacunary 1 Mandel"
  int param degree
    caption="degree n"
    hint="If your coloring algorithm requires a 'power' or 'exponent', set it to 2^n. \
        If you use large values here, you may have to set a small bailout or increase the precision."
    default=2
    min=1
  endparam
  float param bailout
    caption = "Bailout value"
    hint = "Iteration stops when z becomes larger than this bailout."
    min=0
    default=1e4
  endparam
switch:
    type="Lacunary1"
    c=#pixel
    degree=degree
    bailout=bailout
}

图片附件: Fractal1.jpg (2010-9-15 17:52, 22.68 KB) / 下载次数 1007
http://www.inrm3d.cn/attachment.php?aid=7206&k=be60d01be77197cc4dd81954021784db&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-15 20:36

此分形在UF那一个大类中?
作者: 榕坚    时间: 2010-9-15 20:45

59# 柳烟


在aho.ufm系列,这个分形看着不起眼但放大后的图形也是相当好看的:

图片附件: Fractal5.jpg (2010-9-15 21:47, 143.64 KB) / 下载次数 1139
http://www.inrm3d.cn/attachment.php?aid=7208&k=867320f69dec0fc4b54ac401fa10d253&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-16 08:37

造是造出来了,但是与帖图有距离,榕兄帮忙查一下原因。感觉到思路是对的。
未命名.JPG
UF问题.gsp (20.25 KB)

图片附件: 未命名.JPG (2010-9-16 08:37, 16.21 KB) / 下载次数 1008
http://www.inrm3d.cn/attachment.php?aid=7212&k=e5c31872e9ddf8a32c6682228194b8bc&t=1716013457&sid=BMBUty



附件: UF问题.gsp (2010-9-16 08:37, 20.25 KB) / 下载次数 2447
http://www.inrm3d.cn/attachment.php?aid=7213&k=e5e6b1e04ae0c28351c6ca01064e5a4c&t=1716013457&sid=BMBUty
作者: 榕坚    时间: 2010-9-16 09:42

61# 柳烟
应该就是它了,逃逸区与贴图不一致可能是迭代次数的问题。这样两次迭代后速度会受影响,放大倍数受到制约,这是几何画板的不足之处。这么快就解决了,赞一个。
作者: 柳烟    时间: 2010-9-16 09:56

61# 柳烟
应该就是它了,逃逸区与贴图不一致可能是迭代次数的问题。这样两次迭代后速度会受影响,放大倍数受到制约,这是几何画板的不足之处。这么快就解决了,赞一个。
榕坚 发表于 2010-9-16 09:42
可能是你说的原因.几何画板这软件,确实还有值得改进的地方.几何画板计算精度最大到十万分位,这就需要改进,象有些M集J集的定位点坐标超过十万分位,这几何画板就无能为力了.
作者: 榕坚    时间: 2010-9-16 11:08

63# 柳烟


定位点精度问题很有趣,输入给几何画板超过十万分位它还是可以识别的,但是它输出给我们的被限在十万分位了。
作者: 柳烟    时间: 2010-9-16 13:47

60# 榕坚
此不起眼的分形,确实如你所说,放大后的图片很绚烂.
Fractal23.JPG

图片附件: Fractal23.JPG (2010-9-16 14:20, 127.68 KB) / 下载次数 986
http://www.inrm3d.cn/attachment.php?aid=7218&k=df285bf2699ef3ad76fe6481aed9dd71&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-16 17:32

真是难为几何画板了,使尽浑身解数扫得#60放大图:

图片附件: 捕获536.JPG (2010-9-16 17:32, 91.52 KB) / 下载次数 998
http://www.inrm3d.cn/attachment.php?aid=7219&k=b065fc0aac9634f383b9a2cd19d46584&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-25 17:21

UF中的一种另类M集,整了老半天不能出结果。求助:
Tah-StutterBrot {
;
;This is a version of mandelbrot that
;switches the values of C and Z every
;few (default:501) iterations.
;
init:
  c = #pixel
  z = @start
  float f = @restart
  
loop:
    f = f - 1
  IF (f <= 0)
    f = @restart
    oldC = c
    c = z*@sign
    z = oldC
  ENDIF
     z = z^@power + c
  bailout:
  |z| <= @bailout
  
default:
  title = "StutterBrot"
  helpfile = "dmj-pub\dmj-pub-uf-stutter.htm"
  center = (0,0)
  periodicity = 0
  maxiter = 1000

  param start
    caption = "Start Value"
    default = (0,0)
    hint = "Starting value for each point.  You can use this to \
            'perturb' the fractal."
  endparam
  param power
    caption = "Exponent"
    default = (2,0)
    hint = "The exponent, dummy"
  endparam
  param bailout
    caption = "Bailout"
    default = 1e20
    hint = "Bailout value; larger values will cause more \
            iterations to be done for each point."
  endparam
  
  param restart

    caption = "Restart Interval"
    default = 501.0
    min = 1e-10
    hint = "Specifies the number of iterations before c is reset."
  endparam
  
  param sign
    caption = "Sign"
    default = -1.0
    hint = "Specifies the sign of the new C."
  endparam

  
switch:
  type = "Tah-StutterJulia"
  seed = #pixel
  start = start
  restart = restart
  power = power
  sign = sign
  bailout = bailout
}

图片附件: Fractal1.jpg (2010-9-25 17:21, 30.82 KB) / 下载次数 862
http://www.inrm3d.cn/attachment.php?aid=7385&k=db009041c3a9d6f8458d60edf2707592&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-25 18:17

在那个类别中?
作者: 榕坚    时间: 2010-9-25 18:47

68# 柳烟


在tah.ufm中。
作者: xuefeiyang    时间: 2010-9-25 19:55

64# 榕坚


画板的精度稍加计算也是想精确到多少位都可以。足够作分形定位用了。
作者: 榕坚    时间: 2010-9-26 14:56

同一系列的另一个也挺有趣的:
Tah-MandelJulia {
;
;Hey, looky here!  It averages the point in the
;mandelbot set with that of the julia seed!
;Sorry, this it's own switch.
;
init:
  cj = @seed
  zj = #pixel
  cm = #pixel
  zm = @start
loop:
  zj = zj^@power + cj
  zm = zm^@power + cm
  z = (zm + zj)/2
bailout:
  |z| <= @bailout
default:
  title = "MandelJulia"
  param power
    caption = "Power"
    default = (2,0)

    hint = "The Exponent, stupid."
  endparam
  param seed
  Caption = "Seed"
  Default = (.26,.0016)
  Hint = "The Julia-type seed."
  endparam
  param restart
    caption = "Restart Interval"
    default = 1.0
    min = 1e-10
    hint = "Specifies the number of iterations before c is reset."
  endparam
param start
    caption = "Start Value"
    default = (0,0)
    hint = "Mess it up."
  endparam
  param bailout
    caption = "Bailout value"
    default = 4.0
    min = 1.0
    hint = "Contain yourself!"
  endparam
  }
这个比较容易做。
给M集纹身:

图片附件: 捕获.JPG (2010-9-26 14:56, 34.12 KB) / 下载次数 880
http://www.inrm3d.cn/attachment.php?aid=7394&k=eede1e05f2258174e113d8b8b861712d&t=1716013457&sid=BMBUty



图片附件: Fractal1.jpg (2010-9-26 15:46, 87.33 KB) / 下载次数 999
http://www.inrm3d.cn/attachment.php?aid=7397&k=7bb6f0c4e3c2ce70da3783d9ed57fb5f&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-9-26 17:13

67# 榕坚
这个分形还没找到好的方法,迭代很怪异,用画板还没找到思路。
作者: 榕坚    时间: 2010-9-27 18:58

72# 柳烟


我弄来弄去都是原来的M集呢?
作者: 柳烟    时间: 2010-9-27 20:12

73# 榕坚
n>501,则M集中有花样,如果n<501,则一定是M集,这从代码中能看出是这样。
作者: 柳烟    时间: 2010-9-28 16:06

这段代码,可能我在理解时有误,结果造出的图与帖图距离大。问问榕坚兄,当f<=0时,迭代公式为那般?IF后的z是指初始值z还是f>0时迭代的终值?这问题困扰着我,如果这问题解决,这个分形不成为问题。
loop:
    f = f - 1
  IF (f <= 0)
    f = @restart
    oldC = c
    c = z*@sign
    z = oldC
  ENDIF
     z = z^@power + c
  bailout:
  |z| <= @bailout
作者: 榕坚    时间: 2010-9-28 16:33

75# 柳烟


不知理解是否有误:f>0时正常迭代,f<=0时,C换成-Z,Z换成C,再迭代501次。判断语句结束后的Z应该是接着刚获得的Z。
作者: changxde    时间: 2010-9-29 11:38

如何用迭代实现 f 的值的变化:501,500,……,2,1,0,501,500,……?
作者: 榕坚    时间: 2010-9-29 15:01

77# changxde


f=501
f=k*(f-1)+非k*501
从f-f迭代即可。
k为判断f是否>=0
作者: 柳烟    时间: 2010-9-29 20:24

78# 榕坚
这个分形我决定放弃了,干了几天,越弄头脑越昏,越弄越不带劲,那位板友做出后,请帖上源文件,谢谢。
作者: changxde    时间: 2010-9-30 09:34

78# 榕坚
学习了
pic16.GIF

图片附件: pic16.GIF (2010-9-30 10:53, 6.87 KB) / 下载次数 1551
http://www.inrm3d.cn/attachment.php?aid=7436&k=cdd83d82243371cc384349af4527caad&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-30 10:01

80# changxde


期待着changxde老师再给大家一个惊喜,从代码来看几何画板应该能演绎这个分形的。
作者: 柳烟    时间: 2010-9-30 12:21

81# 榕坚
张老师可试试看,干了几天,思维已成定式,越弄越不带劲。
作者: 榕坚    时间: 2010-9-30 13:17

刚才重新再读一遍代码,好象明白了自己的做法与代码的差异。等空下来后再来试试。几何画板有一点很麻烦:更改。设计不到位的话没办法更改,只能重做(迭代中的次数、迭代点等一但发现有错的话不能更改只能删掉重做迭代)。
作者: 柳烟    时间: 2010-9-30 14:38

UF中的另一问题,也困扰着我好几天了,我将UF中的代码及效果图帖于此,再将我作的图帖于此,两相比较会发现,图有差别,但找不到原因何在,大家帮忙找找看。
该分形位于rab.ufm中的Cayley-mand。代码如下:
Cayley-mand {
; Ron Barnett, February 1999
; based upon the formula z = z^3 - az - c + 1
; convergence methods added 10/2/2004
init:
  complex fz = 0
  complex fzp = 0
  complex fzp2 = 0  
  #z = 0
  complex oldz = 0
  complex a = #pixel
  float iterate = 0
loop:
  iterate = iterate + 1
  oldz = #z
  fz = #z^3 - a*z - a + 1
  fzp = 3*#z^2 - a
  fzp2 = 6*#z
  if @converge == 0                          ; Newton
    #z = #z - fz/fzp
  elseif @converge == 1                      ; Householder
    #z = #z - fz/fzp*(1 + fz*fzp2/(2*fzp^2))   
  elseif @converge == 2                      ; Halley
    #z = #z - 2*fz*fzp/(2*fzp^2 - fz*fzp2)  
  elseif @converge == 3                      ; Schroder
    #z = #z - fz*fzp/(fzp^2 - fz*fzp2)  
  elseif @converge == 4                      ; Ho custom
    #z = #z - fz/fzp*(1 + fz*fzp2/(@custom*fzp^2))      
  elseif @converge == 5                      ; Ha custom
    #z = #z - 2*fz*fzp/(@custom*fzp^2 - fz*fzp2)  
  elseif @converge == 6                      ; H_S custom
    #z = #z - @custom*fz*fzp/(@custom*fzp^2 - fz*fzp2)      
  elseif @converge == 7                      ; Mixed1
    if  iterate % 2 == 0
      #z = #z - fz/fzp*(1 + fz*fzp2/(2*fzp^2))  
    else
      #z = #z - fz/fzp
    endif  
  elseif @converge == 8                      ; Mixed2
    if  iterate % 2 == 0
      #z = #z - 2*fz*fzp/(2*fzp^2 - fz*fzp2)  
    else
      #z = #z - fz/fzp
    endif
  elseif @converge == 9                      ; Mixed3
    if  iterate % 2 == 0
      #z = #z - fz*fzp/(fzp^2 - fz*fzp2)  
    else
      #z = #z - fz/fzp
    endif
  elseif @converge == 10                      ; Mixed4
    if  iterate % 2 == 0
      #z = #z - @custom*fz*fzp/(@custom*fzp^2 - fz*fzp2)  
    else
      #z = #z - fz/fzp
    endif
  endif
bailout:
  |#z - oldz| >= @bailout
default:
  title = "Cayley Mandel"
  maxiter = 1000
  center = (0.3593516980975, 0)
  magn = 360
  method = multipass
  periodicity = 0
  heading
    caption = "Cayley Mandelbrot"
  endheading
$ifdef VER40
  heading
    text = "This is a 'convergent' fractal that uses multiple convergence \
            methods and has Mandelbrot-like regions for several convergence methods."
  endheading
$else
  heading
    caption = "This is a 'convergent' fractal"
  endheading
  heading
    caption = "that uses multiple convergence"
  endheading
  heading
    caption = "methods and has Mandelbrot-like regions"
  endheading
  heading
    caption = "for several convergence methods."
  endheading
$endif
  param version
    caption = "Formula Version"
    default = 1.0
    hint = "You should never see this parameter; it's used internally to track \
        which version of the formula was used to create your image, so that \
        if a bug is found which breaks backwards-compatibility, the formula \
        can adapt transparently."
    visible = false
  endparam
  param bailout
    caption = "Bailout value"
    default = 0.000001
  endparam
  heading
    caption = "Convergence Methods"
  endheading  
  param converge
    caption = "Convergence Method"
    default = 0
    enum = "Newton" "Householder" "Halley" "Schroder" "Ho Custom" \
           "Ha Custom" "H_S Custom" "Mixed1" "Mixed2" "Mixed3" "Mixed4"
  endparam  
  float param custom
    caption = "H_S Constant"
    default = 1.5
    visible = @converge==4 || @converge==5  || @converge==6 || @converge==10
  endparam  
switch:
  type = "Cayley-jul"
  bailout = @bailout
  converge = @converge
  p1 = #pixel
  custom = @custom
}
作者: 柳烟    时间: 2010-9-30 14:44

当开关项为Newton时,我作的图是:
未命名1.JPG
而UF中的图是:
Fractal2.jpg
看起来还一致。
而当开关项是Householder时,UF中效果:
Fractal5.jpg
而我作的图是:
未命名2.JPG
比较可发现,UF中最中间最小的等势圈为圆,而我的最中间是半月形,链条也有差异。而迭代次数两者都是一样的,这一差异不打紧,当作后面的开关项Mixed1,是这两种分形的揉合,差异就更大了,UF中的M集有小乌龟,而我的呢,没有乌龟,且链条差异大,UF中的图形美不胜收。
Mixed1开关项中的IF语句后的iterate % 2,是指:iterate -trunc(iterate /2)*2.

图片附件: 未命名1.JPG (2010-9-30 14:44, 17.98 KB) / 下载次数 982
http://www.inrm3d.cn/attachment.php?aid=7440&k=4cf5353f3f7d016d1bcba42f8864656c&t=1716013457&sid=BMBUty



图片附件: Fractal2.jpg (2010-9-30 14:44, 18.57 KB) / 下载次数 1023
http://www.inrm3d.cn/attachment.php?aid=7441&k=8974691bce5bb881fc45a20f6026dbc9&t=1716013457&sid=BMBUty



图片附件: Fractal5.jpg (2010-9-30 14:44, 19.52 KB) / 下载次数 972
http://www.inrm3d.cn/attachment.php?aid=7442&k=0637553f6306131862c2f95d5741fd18&t=1716013457&sid=BMBUty



图片附件: 未命名2.JPG (2010-9-30 14:44, 20.63 KB) / 下载次数 990
http://www.inrm3d.cn/attachment.php?aid=7443&k=97976da448f9e86b6dde7fa60dd4453e&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-30 17:35

85# 柳烟


花了一个下午,验证结果没有问题。你上面的结果也应该是没错的,可能是着色的原因吧。我之前做过一个newton为独立开关项的,这次把所有开关整在一个文件中,几何画板地运行起来慢地象蜗牛似的。

图片附件: 捕获.JPG (2010-9-30 17:35, 19.67 KB) / 下载次数 915
http://www.inrm3d.cn/attachment.php?aid=7445&k=afb8161e3c832068b2bbb5fb80c1dbef&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-30 21:13

看来明天又要重做了,把10个开关项整在一起,扫一张迭代次数为700的图形比我早晨扫普通M集迭代10000次还难哪。图形倒确实是非常漂亮的,可是已经扫了1个小时多了,哎:

图片附件: 捕获.JPG (2010-9-30 21:13, 27.67 KB) / 下载次数 953
http://www.inrm3d.cn/attachment.php?aid=7448&k=448a9a46f6658817830544f2b5d2ac4d&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-9-30 21:48

今天做这个开关项才知道几何画板的计算器中输入的算式长度也受到限制,与excel中if语句的嵌套个数受到限制有点象。
作者: 柳烟    时间: 2010-9-30 22:13

86# 榕坚
榕兄在作图时,对程序中的 fz = #z^3 - a*z - a + 1里的第二项中的z是不是当作第一项中的#Z来处理的呢,我把这两个均看作#z进行处理。等势圈成半月形有问题,我把那个源文件帖在此,榕兄帮忙看看。谢谢。
未命名.JPG
问题.gsp (27.86 KB)

图片附件: 未命名.JPG (2010-9-30 22:13, 16.12 KB) / 下载次数 974
http://www.inrm3d.cn/attachment.php?aid=7449&k=1f329c0c560b53d9c58bbe17e31d109c&t=1716013457&sid=BMBUty



附件: 问题.gsp (2010-9-30 22:13, 27.86 KB) / 下载次数 1997
http://www.inrm3d.cn/attachment.php?aid=7450&k=88714d17f9227cef7d215f85e8c5eeb9&t=1716013457&sid=BMBUty
作者: 柳烟    时间: 2010-9-30 23:38

问题找到了,将面板上的逃逃半径0.000001再在小数点后,再加一个0,即由原来的10^-6改为10^-7,结果正常了。如果再设得更小更小一些,则半月形缩为一个点了。
未命名.JPG
每解决一个问题,又可朝前飞跃一步了,学习复分形,路上充满荆刺,也有鲜花,但荆刺毕竟多。

图片附件: 未命名.JPG (2010-9-30 23:38, 18.66 KB) / 下载次数 991
http://www.inrm3d.cn/attachment.php?aid=7452&k=229289f3944311b0587c371084f00388&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-10-1 10:54

终于成功了,还差调色:

图片附件: 捕获568.JPG (2010-10-1 10:54, 45.45 KB) / 下载次数 948
http://www.inrm3d.cn/attachment.php?aid=7453&k=10008890bf5054943a885a612d1e7926&t=1716013457&sid=BMBUty



附件: Tah-StutterBrot.gsp (2010-10-1 10:54, 13.14 KB) / 下载次数 1614
http://www.inrm3d.cn/attachment.php?aid=7454&k=8a62e087b37b1cad26bc9947d65d8593&t=1716013457&sid=BMBUty
作者: 榕坚    时间: 2010-10-1 14:17

调一下颜色,再把迭代次数提高:

图片附件: 捕获.JPG (2010-10-1 14:17, 32.72 KB) / 下载次数 1062
http://www.inrm3d.cn/attachment.php?aid=7459&k=2e52a4904c3ce46a36bf4da09311b3e7&t=1716013457&sid=BMBUty


作者: 柳烟    时间: 2010-10-1 14:57

恭喜并感谢榕坚兄,作得真好.
作者: 榕坚    时间: 2010-10-1 15:11

一直以为迭代时那张表格很讨厌,其实这次是它帮了大忙。迭代10次观察那张表的数字变化检查到了之前做法与代码的不同之处。修改后终于行了。
作者: xiaongxp    时间: 2010-10-1 16:30

94# 榕坚
美图竟然是这样练就的。我也讨厌过那表格,看来当刮目相看了。
作者: changxde    时间: 2010-10-2 16:53

恭喜榕老师,谢谢分享成功的果实。

表格只是观察的一种方法。
作者: 榕坚    时间: 2010-10-6 08:28

谁能把这段英文给翻译一下(关于UF中whitesq逻辑变量的定义):This predefined symbol returns true if the x-coordinate and the y-coordinate of the pixel being calculated give an odd number when added together; otherwise, it returns false. If you think of the screen as a large checkerboard with white and black squares with the size of a single pixel, #whitesq returns true for every white pixel.
从字面上看:象素点的坐标奇、偶数是怎么定义的呢?
作者: 柳烟    时间: 2010-10-9 19:16

这个UF分形,我以失败告终。
Carr2004 {
; Updated for UF2 by Erik Reckase, March 2000
          ; Modified Sylvie Gallet frm. [101324,3444], 1996
init:
  z=c=pixel, z1=imag(p1-cos(2*(pixel)))*z-p2
  int iter=0, int limit=round(real(p1)), float bailout=16
loop:
  IF (iter==limit)
    z = z1, c = p3
  ENDIF
  z=z*z+c
  iter=iter+1
bailout:
  |z| <= bailout
default:
  title = "Carr 2004"
  periodicity = 0
  maxiter = 500
  magn = 1.3
  center = (-.4,0)
  method = multipass
  param p1
    caption = "Iter Lim/Julia Scale"
    default = (50,1)
    hint = "The real part of this parameter acts as an \
            iteration limit, where the formula's calculation \
            changes.  The imaginary part of this parameter \
            scales the Julia structure."
  endparam
  param p2
    caption = "Julia Center"
    default = (-0.3,0)
  endparam
  param p3
    caption = "Julia Params"
    default = (-0.65,-0.4)
  endparam
}
此分形位于carr2000.ufm中
2.JPG

图片附件: 2.JPG (2010-10-9 19:16, 52.45 KB) / 下载次数 1269
http://www.inrm3d.cn/attachment.php?aid=7552&k=be6c21cc19e2f96d4c650596e0101e5b&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-10-9 19:30

98# 柳烟


carr系列是UF中难度较大的一个系列,之前做过一个不成样的。不过看这个代码好象还可以,正在扫描图形,完了后试一试。
作者: 榕坚    时间: 2010-10-9 23:26

怎么弄出了这么个东西来:

图片附件: 捕获.JPG (2010-10-9 23:26, 52.19 KB) / 下载次数 1201
http://www.inrm3d.cn/attachment.php?aid=7557&k=7bdb7f2795448d541887f0df73a3b6e4&t=1716013457&sid=BMBUty


作者: 榕坚    时间: 2010-10-10 10:53

M集内部应该没有问题,外部那些多余的色块应该是cos函数造成的。




欢迎光临 inRm3D: 画板论坛 (http://www.inrm3d.cn/) Powered by Discuz! 7.0.0