- UID
- 30376
- 帖子
- 527
- 精华
- 1
- 积分
- 6520
- 来自
- 湖南湘潭
|
159# lnszdzg
para:["n(z-q)^2(z+q)^2",-3.0,3.0,-2.0,2.0,-3.0,3.0,-2.0,2.0],
default:"z<>1",
func:function(x,y,a,b)
{
var i=0,e=[{x:x,y:y}],t=0;
var Nta=Nt*a,Ntb=Nt*b,Nva=(1-Nt)*a,Nvb=(1-Nt)*b;//nova/newton 开关
var qr2=qR*qR-qI*qI,qi2=2*qR*qI;
var qr4=qr2*qr2-qi2*qi2,qi4=2*qr2*qi2;
if(M)x=zR,y=zI;
if(Nt&&M)x=qR/sqrt(3),y=qI/sqrt(3);
while(++i<iter)
{
var r2=x*x-y*y,i2=2*x*y;
var r3=x*r2-y*i2,i3=r2*y+x*i2;
var r4=x*r3-y*i3,i4=r3*y+x*i3;
var x1=r4-2*(qr2*r2-qi2*i2)+qr4+Nta;
var y1=i4-2*(qr2*i2+qi2*r2)+qi4+Ntb;
var x2=4*r3-4*(qr2*x-qi2*y);
var y2=4*i3-4*(qr2*y+qi2*x);
var rr=x2*x2+y2*y2,zr=(x1*x2+y1*y2)/rr,zi=(x2*y1-x1*y2)/rr;
var xx=(Rx*x-Ry*y)-rR*zr+rI*zi+Nva,yy=(Rx*y+Ry*x)-rR*zi-rI*zr+Nvb;
if(((xx-x)*(xx-x)+(yy-y)*(yy-y))<dem)t=i,i=iter;
x=xx,y=yy;
if(M==3)e.push({x:x,y:y});//完整轨迹用于 Julia 粒子
}
if(M==3)return e
else return {t:t,x:x,y:y}
}
变量中带 r 或 R 的为实部,带 i 或 I 的为虚部
var scanZplane=function()//扫描 z 平面
{
var c=transPlane(ra,ib,_C);//变换 c 平面
for(var iy=yMax,y=0,i=0;y<height;iy-=dy,y++)
for(var rx=xMin,x=0;x<width;rx+=dx,x++,i+=4)
{
var z=transPlane(rx,iy,_Z));//变换扫描平面
var co=setColor(iterator(z.r,z.i,c.r,c.i),z.r,z.i);//至调色板
for(var k=0;k<co.length;k++)pix[i+k]=co[k];
}
}
var scanCplane=function()//扫描 c 平面
{
for(var b=yMax,y=0,i=0;y<height;b-=dy,y++)
for(var a=xMin,x=0;x<width;a+=dx,x++,i+=4)
{
var c=transPlane(a,b,_C);//变换扫描平面
var co=setColor(iterator(zR*c.r,zI*c.i,c.r,c.i),c.r,c.i);//至调色板
for(var k=0;k<co.length;k++)pix[i+k]=co[k];
}
} |
|