返回列表 回复 发帖
sam.ufm中的范例。
sierpinskimod {
; Written by Luke Plant
; Modified by Frederik Slijkerman
; Modified by Samuel Monnier
; (Twist functions added)
init:
  complex z = #pixel
loop:
  IF (imag(z)>0.5)
    z = @f1(2*real(z) + flip(2*imag(z)-1))
(满足条件imag(z)>0.5时,执行此语句z = @f1(2*real(z) + flip(2*imag(z)-1))
,按此算出的点进行迭代。)
  
ELSEIF (real(z)>0.5)
    z = @f2(2*real(z)-1 + flip(2*imag(z)))
(如果imag(z)>0.5不成立,但是real(z)>0.5成立,则执行此语句进行迭代)
ELSE
    z = @f3(2*real(z) + flip(2*imag(z)))
(如果条件imag(z)>0.5与条件real(z)>0.5都不成立时,则执行z = @f3(2*real(z) + flip(2*imag(z))) ,并按此进行迭代。上面的f1,f2,f3均为不同的复函数,面板上点选不同的复函数,则产生不同的复分形。)  
ENDIF

bailout:
  |z| < @bailout

default:
  title = "Twisted Sierpinksi Triangle"
  center = (0.4, 0.4)
  magn = 1.1538
  maxiter = 149
  method = multipass
  periodicity = 0
  param bailout
    caption = "Bailout value"
    default = 127
    min = 1
  endparam
  func f1
    caption = "Function 1"
    default = ident()
  endfunc
  func f2
    caption = "Function 2"
    default = ident()
  endfunc
  func f3
    caption = "Function 3"
    default = ident()
  endfunc
}
UF面板上的图,是当f1=f2=f3=ident(z)=z的情形。我下面的视频文件中,除造此外,再造一个f1=f2=f3=abs(z)=|x|+|y|i,为此,我弄一个开关,以产生这二种情形。
34# 柳烟
这最后一图结构漂亮,用HSV方式着色效果一定不错。
42# xiaongxp
向老师工具箱中的HSV着色工具中的D是什么。另梅老师好象提供过一个关于HSV的网站,外国的,向老师知道不,我把网址搞丢了。
视频文件如下:
http://u.115.com/file/f6466edb4c#
造视频时的原文件,附上:
sierpinskimod.gsp (23.87 KB)
扫图两幅:
未命名.jpg
学习灰度作色,扫之:
未命名(1).jpg
43# 柳烟
这个工具还很不成熟,对其价值我都不太自信了。因为我对亮度函数和饱和度函数还没有真正理解,不知如何与et\em关联,用它试验的几个分形色彩的控制性差,还有待进一步研究。D关联迭代象终点eM。你要的网址是http://de.wikipedia.org/wiki/Ben ... g_complex_functions
46# xiaongxp
非常感谢。
位于alt.ufm系列中。这程序短,易解读,结合前面的介绍,没问题了。
Mandlebot_Alternating_Inv {
init:
  z = @Start
  int n = @Offset
loop:
  if n % @Times == 0
    z = (z^@Power) + (1 / pixel)
  endif
  n = n + 1
  z = (z^@Power) + pixel
bailout:
  |z| < @BailOut
default:
  title = "Alternating(Mandelbrot*n, Mandlebrot_Inv)"
  center = (-0.5, 0)
  maxiter = 250
  periodicity = 0
  method = onepass
  param @Power
    default = (2, 0)
  endparam
  float param BailOut
    default = 4
  endparam
  param @Start
    caption = "Starting Point"
    default = (0,0)
  endparam
  param @Times
    caption = "Times"
    min = 1
    default = 1
  endparam
  param @Offset
    caption = "Offset"
    min = 0
    default = 0
  endparam
}
如有不明白的地方,可提出,大家探讨,一同提高。
视频文件及原文件附上。
http://u.115.com/file/f6e53e8e73#
Mandlebot_Alternating_Inv.gsp (25.03 KB)
位于alt.ufm系列中。
Shard_Mandlebrot {
init:
  z = sin((pixel * @A1) + @A2) / sin((pixel * @B1) + @B2)
(先算好,作为Z最后的定位点。注意不要算好此步后,接着算loop后的z,这样用画板无法迭代。)
loop:
  z = (z^@Power) + pixel
(按此步进行迭代,然后将z定位于init后算出的z就成了。最后是对 pixel着色。)
bailout:
  |z| < @BailOut
default:
  title = "Shard(Mandelbrot)"
  center = (-.5, 0)
  maxiter = 250
  periodicity = 0
  method = onepass
  param @Power
    default = (2, 0)
  endparam
  float param BailOut
    default = 4
  endparam
  param @A1
    default = (0, 1)
  endparam
  param @B1
    default = (-6, -4)
  endparam
  param @A2
    default = (0, 2)
  endparam
  param @B2
    default = (0, 0)
  endparam
  param @start
    caption = "Starting Point"
    default = (0,0)
  endparam
}
用画板玩UF中的复分形,关键是多操练,熟能生巧,当你弄多了后,一看程序,猜都猜得到叫你干什么。如有不对劲,再解读程序,就能成功。
返回列表