返回列表 回复 发帖
10# 柳烟


做这个可是要有十足的耐心和充裕的时间哪。之前做过任意三角形的谢氏三角形,但不是UF的算法。等有空的时间再来试试。这种代码应该是可以用几何画板演绎的。
11# 榕坚
这个代码还容易解读,确实需要时间与足够的耐心才成。我先帖在这儿,我也觉得有点麻烦,先干到其它的,等时间合适,再来尝试尝试。我看到此图不错,萌发了制造出来的欲念。
sanj.JPG
从UF中没看出参数的影响。
10# 柳烟


好象是有影响的,这是用函数ln(x)的结果:

捕获.JPG (38.78 KB)

捕获.JPG

14# 榕坚
榕兄速度真快,做得十分漂亮,佩服。我明天做做看,不懂再请教,这代码长,一看有些胆怯。
IF (modz > @bailout ||       \
      @everyiter ||            \
中的@everyiter是什么意思,你是如何处理的呢?问好。
15# 柳烟


面板中的开关项,值为0或1.
init:
  z1 = #pixel
  z2 = #pixel + @offset
  z3 = #pixel + flip(@offset)

IF ((imag(z1)>=.575*real(z1)) && (-.575*real(z1)<=imag(z1)))
    z1 = 2*z1-1i
  ELSEIF (real(z1)<=0)
    z1 = 2*z1+(.8660254, 0.5)
  ELSEIF (real(z1)>0)
    z1 = 2*z1+(-.8660254, 0.5)
  ELSE
    z1 = 2*z1
  ENDIF
我用画板造此分形时,我在理解这段代码时,卡住了!这段代码的意思是:满足不同的条件时,Z1的算法不同,由红色部分的 Z1,判断当((imag(z1)>=.575*real(z1)) && (-.575*real(z1)<=imag(z1)))成立时,按前面红色部分的z1计算 z1 = 2*z1-1i。当此条件不成立,而按红色部分的z1判断real(z1)<=0成立时,由红色部分的z1按算式z1 = 2*z1+(.8660254, 0.5)算出z1;当这二个条件均不成立,但real(z1)>0成立,则按 z1 = 2*z1+(-.8660254, 0.5)仍由红色的z1代入此式算z1.
这样问题出现了,ELSE下的算式,意思是上面三种情况均不满足,按z1 = 2*z1算z1,但当同时否定上面三种情况时,似又出现三种情况之一,这矛盾,如何解决呢?或者是我理解有误?
其实起作用的是:
IF ((imag(z1)>=.575*real(z1)) && (-.575*real(z1)<=imag(z1)))
    z1 = 2*z1-1i
  ELSEIF (real(z1)<=0)
    z1 = 2*z1+(.8660254, 0.5)
  ELSE
    z1 = 2*z1+(-.8660254, 0.5)
ENDIF
从代码看不会执行:Z1=2*Z1 ,我就把它删了。
18# 榕坚
谢过榕兄指点,我正在画板中准备各数据,这段:
IF (modz > @bailout ||       \
      @everyiter ||            \
      done == #maxit + 2)      ; done, or every iteration, or last
    ; determine continuous iteration (height) for each point
      e1 = iterexp1 * @zscale
      e2 = iterexp2 * @zscale
      e3 = iterexp3 * @zscale
中的条件:modz > @bailout ||       \
      @everyiter ||            \
      done == #maxit + 2如何处理?之前的数据已经准备好了,到这里,又进行不下去了。
if1:0.5*(1+sgn(sgn(modZ-@bailout)-0.5))
if2: @everyiter
if3:1-abs(sgn(done-(n+2)))
IF=sgn(if1+if2+if3)
n为迭代次数,@everyiter的值预先赋以0或1。
返回列表