返回列表 回复 发帖
老师们的刻苦钻研精神是画板分形向高峰攀登的源动力,致敬!向你们学习、学习、再学习。
我对UF可以说是一点不懂,只是简单地基本操作,不知道E文,采用乱试看效果,更谈不上读代码。从试验的角度看,分形主要有公式,内部着色和外部着色,公式决定了分形的结构,通过内外着色来实现不同的效果。是这样的吗?
22# dyk
应该是这样的。我们也对E文一窍不通,只是按代码程序,大概加估计进行的。
23# 柳烟

谢谢柳老师,我非常赞赏你的毅力和智慧。
画板演绎UF的乐趣:先是被分形奇妙的结构所吸引,利用UF已完成的范例充分欣赏一幅幅漂亮的图形,接下来就有了用几何画板创作的冲动。能一次成功那当然是最理想的,但对于一些复杂些的分形往往要承受一次次失败的打击,放弃……继续……放弃……继续,感受直到某一次扫出正确图形时的喜悦,当中当然离不开失败后一次次仔细琢磨原代码(原代码其实就是计算机的高级语言或类似,只要学过BASIC的一般是没有问题的,当中当然有一些英文注释,看得懂最好,看不懂也没多大关系,因为数学语言是世界通用的)。

2.JPG (84.24 KB)

2.JPG

25# 榕坚
说得太好了!今天搞了几个特效,以失败告终。今晚搞另一个,失败了好几次,终于迎来希望的曙光。
mt-weave {
; Mark Townsend, 15 November 2000
final:
  float this = 0
  float that = 0
  float x = 4096 + real(#z) * @size
  float y = 4096 + imag(#z) * @size
  int xi = floor(x)
  int yi = floor(y)
  float xr = x - xi
  float yr = y - yi
  float s = (1 - @width) / 2
  if @shading == 0
    this = yr
    that = xr
  else
    this = xr
    that = yr
  endif  
  if (xi + yi) % 2 == 0
    if (yr > s)&& (yr < 1 - s)
      #index = this
    else
      if (xr > s)&& (xr < 1 - s)
        #index = that
      else
        #solid = true
      endif
    endif  
  else
    if (xr > s) && (xr < 1 - s)
      #index = that
    else
      if (yr > s) && (yr < 1 - s)
        #index = this
      else
        #solid = true
      endif
    endif  
  endif
default:
  title = "Weave"
  param shading
    caption = "Shading"
    enum = "Thread" "Ribbon"
  endparam
  param width
    caption = "Width"
    default = 0.9
    max = 1.0
  endparam
  param size
    caption = "Scale"
    default = 1.0
  endparam  
}
未命名.jpg
未命名.jpg
weave特效.gsp (24.91 KB)
将就UF胚胎,擅自变动程序,扫UF没有的:
未命名.jpg
失败乃成功之母,柳老师在失败中成功了,祝贺。
bezier-curve {
; Kerry Mitchell 08apr00
;
; Colors by the orbit's closest approach to a user-defined Bezier curve.
; The curve is determined by specifying beginning and ending anchor points,
; through which the curve passes, and 2 control points, which influence the
; shape of the curve.
;
init:
  float x0=real(@z0)
  float y0=imag(@z0)
  float x1=real(@z1)
  float y1=imag(@z1)
  float x2=real(@z2)
  float y2=imag(@z2)
  float x3=real(@z3)
  float y3=imag(@z3)
  float cx=3*(x1-x0)
  float bx=3*(x2-x1)-cx
  float ax=x3-x0-cx-bx
  float cy=3*(y1-y0)
  float by=3*(y2-y1)-cy
  float ay=y3-y0-cy-by
  float t=0.0
  float r=0.0
  float x=0.0
  float y=0.0
  float u=0.0
  float v=0.0
  int iter=0
  float rmin=1.0e20
  int itermin=0
  zmin=(0.0,0.0)
loop:
  iter=iter+1
  u=real(#z)
  v=imag(#z)
;
; The curve is parameterized with x(t) and y(t).  Step through several t
; values to find the nearest approach of the orbit to the curve.
;
  t=0.0
  while(t<=1.0)
    x=((ax*t+bx)*t+cx)*t+x0
    y=((ay*t+by)*t+cy)*t+y0
    r=(x-u)*(x-u)+(y-v)*(y-v)
    if(r<rmin)
      rmin=r
      itermin=iter
      zmin=#z
    endif
    t=t+@dt
  endwhile
final:
  if(@colorby==1)            ; iteration @ min
    #index=0.01*itermin
  elseif(@colorby==2)        ; angle @ min
    t=atan2(zmin)
    t=t/pi
    if(t<0.0)
      t=t+2.0
    endif
    #index=0.5*t
  elseif(@colorby==3)        ; draw section
    u=real(#pixel)
    v=imag(#pixel)
    t=0.0
    rmin=1e20
    while(t<=1.0)
      x=((ax*t+bx)*t+cx)*t+x0
      y=((ay*t+by)*t+cy)*t+y0
      r=(x-u)*(x-u)+(y-v)*(y-v)
      if(r<rmin)
        rmin=r
      endif
      t=t+@dt
    endwhile
    #index=rmin^@nexp
  else                       ; minimum distance
    #index=rmin^@nexp
  endif
default:
  title="Bezier Curve"
  helpfile="lkm-help\lkm-bezier.html"
  param z0
    caption="1st anchor point"
    default=(1.0,0.0)
    hint="Curve starts at this point."
  endparam
  param z1
    caption="1st control point"
    default=(1.0,1.0)
    hint="Influences the shape of the curve."
  endparam
  param z2
    caption="2nd control point"
    default=(0.0,0.0)
    hint="Influences the shape of the curve."
  endparam
  param z3
    caption="2nd anchor point"
    default=(0.0,1.0)
    hint="Curve ends at this point."
  endparam
  param dt
    caption="step size"
    default=0.1
    hint="Decrease for smoother line, increase \
      to see dots.  Should be between 0 & 1."
    min=0.0
    max=1.0
  endparam
  param nexp
    caption="power"
    default=0.1
    min=0.0
    hint="Decrease to make thinner lines. Use \
      with 'minimum distance' coloring."
  endparam
  param colorby
    caption="color by"
    default=0
    enum="minimum distance" "iteration @ min" \
      "angle @ min" "show curve"
  endparam
}
UF中效果图:
Fractal2.jpg
我干了两天,劳而无功。
返回列表