包絡線

点光源が(1,0)にあるカージオイドの火線を描画しました

カージオイドの火線

 参考までに POV-Rayで
 点光源によるカージオイドの火線を 描画する方法を載せておきます
  //********************************************************************************
    #macro Line_function(Tp,Fn)
     #switch(Fn)
      #case (31) //Cardioid
                #local Px=(A+B)*cos(Tp)+B*cos( (A+B)*Tp/B );
                #local Py=(A+B)*sin(Tp)+B*sin( (A+B)*Tp/B );
                #local F=<Px,Py>; #break
     #end F
    #end
  //********************************************************************************
    #macr
o Space_line2(Lr,V1,Fn)
     #local P1=Line_function(V1.x,Fn);
     #local Tp=V1.x; #while(Tp<V1.y)
      #local P2=Line_function(Tp+V1.z,Fn);
      cylinder { P1, P2, Lr }
      #if(Tp<V1.y-V1.z) sphere { P2, Lr } #end #local P1=P2;
     #local Tp=Tp+V1.z; #end
    #end
  //********************************************************************************
    #macro Catacaustics(Lr,V1,Ls,Rlen,Fn) #local H=1e-8;
     #local Tp=V1.x; #while(Tp<V1.y)
      #local Pv=Line_function(Tp,Fn);
      #local Tv=(Line_function(Tp+H/2,Fn)-Line_function(Tp-H/2,Fn))/H;
      #local mNv=<-Tv.y,Tv.x>;
      #if(vlength(mNv)=0) #local mNv=1e-9*x; #end
      #local mNT=mod(atan2(mNv.y,mNv.x)+2*pi,2*pi);
      #local Lv=Ls-Pv;
      #if(vlength(Lv)=0) #local Lv=-1e-9*x; #end
      #local LT=mod(atan2(Lv.y,Lv.x)+2*pi,2*pi);
      #local Th=mNT-LT;
      cylinder { 0, Rlen*Lv Lr rotate degrees(2*Th)*z translate Pv }
     #local Tp=Tp+V1.z; #end
    #end
  //********************************************************************************
    #local Fn=31;  
    #local Dv=72;
    #local Sc=21; #local Tr=-Sc*2/3*x; #local Lw=0.2/Sc;
    //
    #local A=1; #local B=1; //Cardioid
    #local Caustic=
    union {
     Space_line2(0.25/Sc,<0,2*pi,0.3/Sc>,Fn)
     Catacaustics(Lw,<0,2*pi,2*pi/Dv>,<1,0>,2,Fn)
    }
    //
    #local Ntop=Dv+1;
    #local Cardioid =
    prism { linear_sweep linear_spline -Lw,Lw,Ntop,
     #local i=0; #while(i<Ntop) #local Th=i*2*pi/Dv;
      <(A+B)*cos(Th)+B*cos( (A+B)*Th/B ),(A+B)*sin(Th)+B*sin( (A+B)*Th/B )>
     #local i=i+1; #end
    rotate -90*x scale 1+Lw/2 }
    //
    intersection {
     object { Caustic }
     object { Cardioid }
    pigment { color rgb <0.773,0.091,0.137> } scale Sc translate Tr }

カオス

円環状カオスの式を改変してレンダリングしました

改変円環状カオス

【式】

 改変円環状カオス    W=(x(n),y(n))   (0≦n≦9600)

          x(n+1)=y(n)+Ax(n)+K/(1+x(n)^2)+L+Me^(-y(n)^2)
          y(n+1)=-Bx(n)

     A=0.1405 , B=1 ,  K=7 , L=0 , M=0.0001 , x(0)=0 , y(0)=0

     プロット範囲 4<n≦9600

 

       参考までに POV-Rayによる
       改変円環状カオス の描画方法を載せておきます

  //*****************************************************************************
      #macro Modified_chaos2C(Nmax,A,B,K,L,M,P0,Vctl,Lr)
       #local X=P0.x; #local Y=P0.y;
       #local N=0; #while(N<=Nmax)
        //
        #local rC=(sin(mod(Vctl.x*Y,2*pi))+1.2)/2.2;
        #local gC=(cos(mod(Vctl.y*X,2*pi))+1.2)/2.2;
        #local bC=(sin(mod(Vctl.z*X*Y,2*pi))+1.2)/2.2;
        //
        #if(N>4) sphere { <X,Y> Lr pigment { color rgb <rC,gC,bC> } } #end
        //
        #local Xn=X;
        #local X=Y+A*X+K/(1+X*X)+L+M*exp(-Y*Y); #local Y=-B*Xn;
       #local N=N+1; #end
      #end  // macro end
  //*****************************************************************************
      #local Sc=6.5; #local Tr=<-0.2,1.1>*Sc; #local Lw=0.5/Sc;
      #local Vctl=<4,2,1>/15;
      #local A=0.1405; #local B=1; #local K=7; #local L=0; #local M=0.0001;
      union { Modified_chaos2C(9600,A,B,K,L,M,<0,0>,Vctl,Lw)
       scale Sc translate Tr }

複素平面

複素力学系のフラクタルをレンダリングしました

ジュリア集合 μ-map

【式】

  ジュリア集合  f(z) = z^5+μ

                                    μ = 0.544 - 0.714 i

                                    反復回数 50  発散しない回数 15以上

 

    参考までに POV-Rayによる
    ジュリア集合の描画方法を載せておきます   //**********************************************************************************
    #macro Ipow(Z1,N)
     #local Zr=pow(vlength(Z1),N);
     #if(Z1.x=0 & Z1.y=0) #local T1=0; #else #local T1=atan2(Z1.y,Z1.x); #end
     #local Zt=N*T1; Zr*<cos(Zt),sin(Zt)>
    #end
   //**********************************************************************************
    #macro Complex_fnc(V1,V2,Fn)
     #switch(Fn)
      //Mu-map (z=V1,u=V2)
      #case( 3) #local F=Ipow(V1,3)+V2; #break //f(z)=z^3+u
      #case( 4) #local F=Ipow(V1,4)+V2; #break //f(z)=z^4+u
      #case( 5) #local F=Ipow(V1,5)+V2; #break //f(z)=z^5+u
     #end F
    #end
   //**********************************************************************************
    #macro Complex_julia(Vre,Vim,Vct,Fn)
     #local Lr=sqrt(pow(Vre.z/2,2)+pow(Vim.z/2,2));
     #local R=Vre.x; #while(R<Vre.y)
      #local I=Vim.x; #while(I<Vim.y) #local Zn=< R, I >;
       #local K=1; #while(K<=Vct.y)
        #local Zn=Complex_fnc(Zn,< Vre.t, Vim.t >,Fn); #local Py=K/Vct.y;
        #if(vlength(Zn)>Vct.x) #local K=Vct.y; #end
       #local K=K+1; #end
       #if(Py>=Vct.z) cylinder { < R, 0, I >, < R, Py, I >, Lr } #end
      #local I=I+Vim.z; #end
     #local R=R+Vre.z; #end
    #end // macro end 
   //**********************************************************************************
    #local C2 =
      pigment { wood
                turbulence < 0.6, 1.0, 0.3 >
                color_map { [ 0.0 rgb < 0.538, 0.862, 0.538 > ]
                                    [ 1.0 rgb < 0.840, 0.560, 0.840 > ] }
                scale 0.3 }
   //**********************************************************************************
    #local Fn=5;
    #local U=< 0.544, -0.714 >; #local Az=1/50;
    #local Tf = transform { scale 50 rotate -64*x translate <3,-10,25> }
    union { Complex_julia(<-1.5,1.5,Az,U.x>,<-1.1,1.3,Az,U.y>,<2,50,15/50>,Fn)
     pigment { C2 } transform { Tf } }

ギーリス曲線

 極方程式で定義された
 スーパー楕円を拡張したギーリス曲線 をレンダリングしました

ギーリス曲線

【式】

 ギーリス曲線

   r(t)=(|cos(mt/4)/a|^n2+|sin(mt/4)/b|^n3)^(-1/n1)    ( -π≦t<π )

   a=b=42 , m=6 , n=n1=n2=n3 , 1/3≦n<2 (+1/5)

 

    POV-Rayにより ギーリス曲線を描画する方法
  //********************************************************************************
    #macro Line_function(Tp,Fn)
     #switch(Fn)
      #case(12) //Gielis curve
                  #local Cs=abs(cos(M*Tp/4)/A); #local Si=abs(sin(M*Tp/4)/B);
                  #local R=pow(pow(Cs,N2)+pow(Si,N3),-1/N1); 
                  #local F=R*<cos(Tp),sin(Tp)>; #break 
     #end F
    #end
  //********************************************************************************
    #macro Space_line2(Lr,V1,Fn)
     #local P1=Line_function(V1.x,Fn);
     #local Tp=V1.x; #while(Tp<V1.y)
      #local P2=Line_function(Tp+V1.z,Fn);
      cylinder { P1, P2, Lr }
      #if(Tp<V1.y-V1.z) sphere { P2, Lr } #end #local P1=P2;
     #local Tp=Tp+V1.z; #end
    #end
  //********************************************************************************
    #local Lc = pigment { color red 1 green 1/6 blue 2/3 }
  //********************************************************************************
    #local Fn=12;
    #local Lw=0.25;
    #local A=42; #local B=A; #local M=6;
    #local N=1/3; #while(N<2) //N1<=8
     #local N1=N; #local N2=N; #local N3=N;
     union { Space_line2(Lw,< -pi, pi, pi/64>,Fn) pigment { Lc } }
    #local N=N+1/5; #end
  //********************************************************************************