返回列表 回复 发帖
35.png
此图的扫描板,感觉到用外迭代法加旋转变换能解决。先摆在这,大家搞搞。此图来源于分形艺术程序设计。
无标题.png
以上为草图。
向老师说得对,与前面圆科赫造法完全类似。
扫图一幅:
1.jpg
1.jpg
五角星科赫五角星陷阱20150129.gsp (47.91 KB)
选自《分形艺术程序设计》一书中例。
2.gif
看分形书作分形小系列中有此例。
分形艺术程序设计中例20150130.gsp (20.88 KB)
2.jpg
#248楼UF代码如下:
分形艺术程序设计书中例20150130 {

init:
  z = #pixel
  float R1=0.44644
  float r=0.27677
loop:
   x = real(z)
   y = imag(z)
   d1=sqrt((x-0.72323)^2+y^2)
   d2=sqrt((x-0.5114)^2+(y-0.5114)^2)
   d3=sqrt(x^2+(y-0.72723)^2)
   d4=sqrt((x+0.5114)^2+(y-0.5114)^2)
   d5= sqrt((x+0.72723)^2+y^2)
   d6=sqrt((x+0.5114)^2+(y+0.5114)^2)
   d7=sqrt(x^2+(y+0.72723)^2)
   d8=sqrt((x-0.5114)^2+(y+0.5114)^2)
   d9=sqrt(x^2+y^2)
  if d1<r
   x=1/r*(x-0.72323)
   y=1/r*y
  elseif d2<r
   x=1/r*(x-0.5114)
   y=1/r*(y-0.5114)
  elseif d3<r
   x=1/r*x
   y=1/r*(y-0.72723)
  elseif d4<r
   x=1/r*(x+0.5114)
   y=1/r*(y-0.5114)
  elseif d5<r
   x=1/r*(x+0.72723)
   y=1/r*y
  elseif d6<r
   x=1/r*(x+0.5114)
   y=1/r*(y+0.5114)
  elseif d7<r
   x=1/r*x
   y=1/r*(y+0.72723)
  elseif d8<r
   x=1/r*(x-0.5114)
   y=1/r*(y+0.5114)
  elseif d9<R1
   x=1/R1*x
   y=1/R1*y
  endif
  z=x+flip(y)
bailout:
  d1<r||d2<r||d3<r||d4<r||d5<r||d6<r||d7<r||d8<r||d9<R1
default:
  title = "分形艺术程序设计书中例20150130"
  helpfile = "sam-help/various.htm"
  helptopic = "sierp2"
  center = (0,0)
}
1.jpg
前楼画板效果比UF效果好,UF中会出现部分相切圆粘连现象,放大后又是相切的,原因不明,可以肯定的是不是算法问题。
学习向老师安妮花,搞一个代数版:
1.gif
安妮女王的花(代数版).gsp (28.01 KB)
#252的UF代码:
安妮女王雪花20150201 {
init:
  z = #pixel
loop:
   x = real(z)
   y = imag(z)
  arg = atan2(z)
  if abs(arg)<pi/8
    An=0
  elseif abs(arg-pi/4)<pi/8
   An=pi/4
  
  elseif abs(arg-pi/2)<pi/8
   An=pi/2
  elseif abs(arg-3*pi/4)<pi/8
   An=3*pi/4
  elseif abs(arg)>7*pi/8
   An=pi
  elseif abs(-arg-3*pi/4)<pi/8
   An=-3*pi/4
  elseif abs(-arg-pi/2)<pi/8
   An=-pi/2
  elseif abs(-arg-pi/4)<pi/8
  An=-pi/4
  endif
  xO1=0.73097*cos(An)
  yO1=0.73097*sin(An)
  xA1=cos(An)
  yA1=sin(An)
  xC1=0.9212*cos(An)-0.19023*sin(An)
  yC1=0.9212*sin(An)+0.19023*cos(An)
  xC2=0.73097*cos(An)-0.26903*sin(An)
  yC2=0.73097*sin(An)+0.26903*cos(An)
  xC3=0.54074*cos(An)-0.19023*sin(An)
  yC3=0.54074*sin(An)+0.19023*cos(An)
  xC4=0.46194*cos(An)
  yC4=0.46194*sin(An)
  xC5=0.54074*cos(An)+0.19023*sin(An)
  yC5=0.54074*sin(An)-0.19023*cos(An)
  xC6=0.73097*cos(An)+0.26903*sin(An)
  yC6=0.73097*sin(An)-0.26903*cos(An)
  xC7=0.9212*cos(An)+0.19023*sin(An)
  yC7=0.9212*sin(An)-0.19023*cos(An)
  S1=(yA1-yC1)*x-(xA1-xC1)*y+xA1*yC1-yA1*xC1
  S2=(yC1-yC2)*x-(xC1-xC2)*y+xC1*yC2-yC1*xC2
  S3=(yC2-yC3)*x-(xC2-xC3)*y+xC2*yC3-yC2*xC3
  S4=(yC3-yC4)*x-(xC3-xC4)*y+xC3*yC4-yC3*xC4
  S5=(yC4-yC5)*x-(xC4-xC5)*y+xC4*yC5-yC4*xC5
  S6=(yC5-yC6)*x-(xC5-xC6)*y+xC5*yC6-yC5*xC6
  S7=(yC6-yC7)*x-(xC6-xC7)*y+xC6*yC7-yC6*xC7
  S8=(yC7-yA1)*x-(xC7-xA1)*y+xC7*yA1-yC7*xA1
  Q1=-0.2706*x-0.2706*y+0.17678
  Q2=y-0.46194
  Q3=0.2706*x-0.2706*y+0.17678
  Q4=x+0.46194
  Q5=0.2706*x+0.2706*y+0.17678
  Q6=y+0.46194
  Q7=-0.2706*x+0.2706*y+0.17678
  Q8=x-0.46194
if S1>0&&S2>0&&S3>0&&S4>0&&S5>0&&S6>0&&S7>0&&S8>0
   xT1=3.71706*(x-xO1)
   yT1=3.71706*(y-yO1)
   w=xT1+flip(yT1)
endif

if Q1>0&&Q2<0&&Q3>0&&Q4>0&&Q5>0&&Q6>0&&Q7>0&&Q8<0
xT2=2*(x*cos(-pi/8)-y*sin(-pi/8))
yT2=2*(x*sin(-pi/8)+y*cos(-pi/8))
w=xT2+flip(yT2)
endif
z=w

bailout:
  (Q1>0&&Q2<0&&Q3>0&&Q4>0&&Q5>0&&Q6>0&&Q7>0&&Q8<0)||(S1>0&&S2>0&&S3>0&&S4>0&&S5>0&&S6>0&&S7>0&&S8>0)
default:
  title = "安妮女王雪花"
  helpfile = "sam-help/various.htm"
  helptopic = "sierp2"
  center = (0,0)
}
1.gif
五圆极限集20150201 {
init:
  z = #pixel
  a=4.07853
  b=1.68938

loop:
   x = real(z)
   y = imag(z)
  d1=sqrt((x-a)^2+(y-a)^2)
  d2=sqrt((x+a)^2+(y-a)^2)
  d3=sqrt((x+a)^2+(y+a)^2)
  d4=sqrt((x-a)^2+(y+a)^2)
  d5=sqrt(x^2+y^2)
  if d1<a
    x=a+a^2*(x-a)/(d1^2)
    y=a+a^2*(y-a)/(d1^2)
  elseif d2<a
    x=-a+a^2*(x+a)/(d2^2)
    y=a+a^2*(y-a)/(d2^2)
elseif d3<a
    x=-a+a^2*(x+a)/(d3^2)
    y=-a+a^2*(y+a)/(d3^2)
elseif d4<a
    x=a+a^2*(x-a)/(d4^2)
    y=-a+a^2*(y+a)/(d4^2)
elseif d5<b
    x=b^2*x/(d5^2)
    y=b^2*y/(d5^2)
endif
z=x+flip(y)

bailout:
  d1<a||d2<a||d3<a||d4<a||d5<b
default:
  title = "五圆极限集20150201"
  helpfile = "sam-help/various.htm"
  helptopic = "sierp2"
  center = (0,0)

}
UF中扫一个。
1.jpg
UF中五圆极限集的陷阱不好办,好象对本来在陷阱中的点没考虑,故而导致没迭代时的五个原始陷阱缺失,这个问题如何处理呢?望高明教我。
1.jpg
除五个原始陷阱外,其余部分正常,放大一下,看起来非常漂亮:
[attach]23684[/attach]

2.jpg (20.98 KB)

2.jpg

返回列表