返回列表 回复 发帖
#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
1.gif
几何画板不解决有重叠IFS的扫描算法,不仅简单的分形龙扫不出来,像这样漂亮的螺旋分形也无法扫,这可能是IFS和LS扫描实现的最后一个难翻门坎啊。

Spiral Fractal 1 from IFS.gsp (12.49 KB)

Spiral Fractal 2 from IFS.gsp (17.37 KB)

五圆极限集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
改变算法重做这个直角分形,一下瘦身3kB

直角分形1.jpg (18.34 KB)

直角分形1.jpg

直角分形1.gsp (8.17 KB)

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

2.jpg (20.98 KB)

2.jpg

257# 柳烟
柳老师,请参考157#文件的int[0]~int[4]的构造:http://www.inrm3d.cn/viewthread.php?tid=4771&page=16#pid44002
258# xiaongxp
画板实现没有问题,UF中好多陷阱加载时,都缺少初设计时的陷阱。不知在UF中用代码如何处理。
2.jpg

柳老师,我做的陷阱怎么不对啊,小圆不见了,大圆也不是想要的啊。
返回列表