返回列表 回复 发帖
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
(1-z^2)/(z-z^2cos(z)+C的M集,究竟如何造?老兄讲得明白些。我造了好久,搞出一些点。
8.jpg
我试图改变收敛半径,迭代次数,都无果,造出的图,连等势圈也没有。我很早就请教过造出的人,结果打哑谜。
233# 柳烟
柳老师好,我的画板能力实在太差,关于复变模型(1-z^2)/(z-z^2cosz)+c,所有代码都在这里,迭代算法就如模型所示,没有作任何处理,虽然使用了三角不等式着色,但也只是由它来设置画布像素点的不透明度,实际的颜色是由势函数平滑后的et来确定的,至于这个模型的真正结构,我现在还真没摸到门路。这次我将z的初始点换成了c,虽然小M集被扭曲了,但找J集要方便一些:

    scanPlane()//扫描复平面c
    {
        for(var b=iMax,y=0,k=0;y<height;b-=dI,y++) //c平面虚轴,对应画布的y轴
            for(var a=rMin,x=0;x<width;a+=dR,x++,k+=4)//c平面实轴,对应画布的x轴
        {
            var e=iterator(a,b,a,b)//以c为z的初始点进行迭代,返回迭代轨迹数组e
            var co=setColor(e)//依据迭代轨迹e进行着色,返回颜色值co=[r,g,b,a]
            for(j=0;j<4;j++)pix[k+j]=co[j]//在画布上描出该点
        }
    }

    iterator(x,y,a,b)//迭代模型:(1-z^2)/(z-z^2cosz)+c
    {
        var i=-1,e=[{x:x,y:y}],zr,zi;
        while(++i<eT&&((zr=x*x)+(zi=y*y))<eM)//eT、eM 逃逸时间、逃逸半径
        {
            var r2=zr-zi,i2=2*x*y;
            var cr=cos(x)*cosh(y),ci=-sin(x)*sinh(y);
            var x1=1-r2,y1=-i2;
            var x2=x-r2*cr+i2*ci,y2=y-r2*ci-i2*cr;
            var r=x2*x2+y2*y2;
            var xnew=(x1*x2+y1*y2)/r+a,ynew=(x2*y1-x1*y2)/r+b;
            if(sM&&abs(x-xnew)<dem&&abs(y-ynew)<dem)i=eT;//sM 为是否加亮“黑洞”,dem=1/eM
            e.push({x:x=xnew,y:y=ynew});
        }
        return e;
    }

    setColor(e)//三角不等式着色
    {
        var et=e.length-1,ex=e[et].x,ey=e[et].y;
        var t=ln(abs(m)),r=abs(ln(sqrt(ex*ex+ey*ey)))//这里的m=1.125,可以加大色差
        var ac=sqrt(e[0].x*e[0].x+e[0].y*e[0].y);
        var az=0,lb=0,f=0,dist=0,sumEt=0,sumEt_1=0;
        var co=color[255,255,255,255];
        if(et%eT||coInner)
        {
            for(var i=1;i<e.length;i++)
            {
                sumEt_1=sumEt;
                var zr=e[i].x-e[0].x,zi=e[i].y-e[0].y;
                az=sqrt(zr*zr+zi*zi),lb=abs(az-ac);
                sumEt+=(sqrt(e[i].x*e[i].x+e[i].y*e[i].y)-lb)/(az+ac-lb);
            }
            sumEt/=et,sumEt_1/=et-1,f=1+(ln(ln(eM)/2)-ln(r))/t;
            dist=sqrt(sumEt_1+(sumEt-sumEt_1)*f);
            r=ln(r/t)/t,et=abs(et-r)%eT;//势函数平滑,这里仍然使用et着色
            var c=et/cstp,cs=floor(c),ct=ceil(c),v=c%1,u=1-v;
            co[0]=color[cs][0]*u+color[ct][0]*v;
            co[1]=color[cs][1]*u+color[ct][1]*v;
            co[2]=color[cs][2]*u+color[ct][2]*v;
            co[3]=255*dist//三角不等式计算出来的平均距离dist只用来设置像素点的不透明度
        }
        return c;
    }
1.jpg
2.jpg
233# 柳烟
茫然一片:
1.jpg
加亮“黑洞”
2.jpg
内部着色
3.jpg
势函数平滑
4.jpg
5.jpg
Julia集
6.jpg
7.jpg
8.jpg
9.jpg
a.jpg
全部用的:eM=60,eT=120
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
a.jpg
236# xklppp

象牙雕的质感,太俊了。这样直上直下的"峭壁”,我用画板来扫,没能出现这样清晰的效果。
233# 柳烟
柳老师可以在画板中试一下这个,不需要作任何的额外处理:
r=128*(1-cos(ex*ey))
g=128*(1-cos(ex*ex))
b=128*(1-cos(ey*ey))
改变三角函数,色彩有变化但细节不会变。
b.jpg
eM=1200,eT=120
谢过肖老师耐心的耐心,昨天干了一天,此分形其实就是照精典M集的算法进行的。造出后,发现调色太难了,搞了半天,鱼形肚皮里太浑沌了,放大找一个M集比登天还难。向老师 有空看看,如何调色,使鱼肚里的浑沌清晰。
c.jpg
下面是UF中的效果,鱼肚中放大找小乌龟比画板容易多了,主要是画板不知如何调色。另UF中鱼尾肛门处那块很清晰,而画板造出的里面是一柄模糊,不知何故。
d.jpg
在UF中放大一幅:
e.jpg
艰难地在画板中找个M集:迭代次数100,阀值:120,定位坐标(0.61806,-0.00012),放大倍数:879.96661
2.jpg
改阈值为12
3.jpg
返回列表