PopCorn, Mira, Hopalong and...


Absolutly personal and unpublished Morrone transformation of famous 2D attractors in 3D/4D



PopCorn4D
default values

PopCorn, Mira, Hopalong and...

Absolutely personal: Morrone transformation of famous 2D attractors in 3D/4D

Below there is an absolutly personal edition of fomous 2D attractor "transformed" in 3D and/or 4D dimensions.
The result is really interesting...

 

 

3D attractors are point clouds generate from sequences of numbers pn{xn,yn,zn} ⇒ pnR3, nN, where n0→∞ denotes the step of the iteration process starting from a initial p0{x0,y0,z0} point.
In the cloud each next point is function of the previous one:

\[ \eqalign { x_{i+1} = \xi(x_i, y_i, z_i) & \\ y_{i+1} = \phi(x_i, y_i, z_i) & \\ z_{i+1} = \psi(x_i, y_i, z_i) & } \qquad \Bigg\{ \eqalign { & x, y, z \in R \\ & [0, i, n_{\rightarrow\infty}[ \text{   } \Rightarrow i,n \in N \\ } \]

In this section we will see also 4D attractors:

\[ \eqalign { x_{i+1} & = \xi(x_i, y_i, z_i, w_i) & \\ y_{i+1} & = \phi(x_i, y_i, z_i, w_i) & \\ z_{i+1} & = \psi(x_i, y_i, z_i, w_i) & \\ w_{i+1} & = \zeta(x_i, y_i, z_i, w_i) & } \qquad \Bigg\{ \eqalign { & x, y, z, w \in R \\ & [0, i, n_{\rightarrow\infty}[ \text{   } \Rightarrow i,n \in N \\ } \]

where wi coordinate concur to attractor evolution, but in the rendering is plotted the point pi{xi,yi,zi,wi=0}


In the computational code:


 

In the ATTRACTORS window of glChAoS.P:


Colors are indicative of point speed: distance between pi and pi+1
 
You can to start wglChAoS.P with a specific attractor directly from  explore  button. Select lowResources for low resources devices (e.g. mobile devices)
 

Resolution: X        fixed canvas
 
  touchScreen         lowResources

 

 

\begin{align} x_{i+1} & = y_i - sign(x_i) \centerdot \sqrt{|x_i \centerdot k_1-k_2|} \\ y_{i+1} & = k_0 - x_i \\ z_{i+1} & = w_i - sign(z_i) \centerdot \sqrt{|z_i \centerdot k_4-k_5|}\\ w_{i+1} & = k_3 - z_i \\ \end{align}

 

explore
    float f(float a, float k1, float k2) { return (a>0 ? 1 : -1) * sqrt(abs(k1*a-k2)); }
   
    pNew.x = p.y - f(p.x, kVal[1], kVal[2]);
    pNew.y = kVal[0] - p.x;
    pNew.z = p.w - f(p.z, kVal[4], kVal[5]);
    pNew.w = kVal[3] - p.z;

\begin{align} x_{i+1} & = y_i - sin(x_i) \\ y_{i+1} & = k_0 - x_i \\ z_{i+1} & = w_i - sin(z_i) \\ w_{i+1} & = k_1 - z_i \\ \end{align}

 

explore
    pNew.x = p.y - sin(p.x);
    pNew.y = kVal[0] - p.x;
    pNew.z = p.w - sin(p.z);
    pNew.w = kVal[1] - p.z;

\begin{align} x_{i+1} & = y_i - sin(x_i) \\ y_{i+1} & = k_0 - x_i \\ z_{i+1} & = w_i - cos(z_i) \\ w_{i+1} & = k_1 - z_i \\ \end{align}

 

explore
    pNew.x = p.y - sin(p.x);
    pNew.y = kVal[0] - p.x;
    pNew.z = p.w - cos(p.z);
    pNew.w = kVal[1] - p.z;

\begin{align} x_{i+1} & = y_i - cos(x_i) \\ y_{i+1} & = k_0 - x_i \\ z_{i+1} & = w_i - cos(z_i) \\ w_{i+1} & = k_1 - z_i \\ \end{align}

 

explore
    pNew.x = p.y - cos(p.x);
    pNew.y = kVal[0] - p.x;
    pNew.z = p.w - cos(p.z);
    pNew.w = kVal[1] - p.z;

\[ f(\beta, \gamma) = \gamma \centerdot \beta + 2(1-\gamma) \centerdot \beta^2 / (1+\beta^2) \]

\begin{align} x_{i+1} & = y_i + f(x_i, k_0) \\ y_{i+1} & = f(x_{i+1}, k_0) - x_i\\ z_{i+1} & = f(z_i, k_3) + f(y_{i+1}, k_2) + f( f(x_{i+1}, k_0), k_1) \\ \end{align}

 

explore
    float f(float b, float g) { const float b2 = b*b;  return g*b + 2.0*(1.0-g)*b2 / (1+b2);  };

    pNew.x =  p.y + f(p.x, kVal[0]);
    pNew.y =  f(pNew.x, kVal[0]) - p.x;
    pNew.z =  f(p.z, kVal[3]) + f(pNew.y, kVal[2]) + f(f(pNew.x, kVal[0]), kVal[1]);

\[ f(\beta, \gamma) = \gamma \centerdot \beta + 2(1-\gamma) \centerdot \beta^2 / (1+\beta^2) \]

\begin{align} x_{i+1} & = k_1 \centerdot y_i + f(x_i, k_0) \\ y_{i+1} & = f(x_i, k_0) - x_i \\ z_{i+1} & = k_3 \centerdot w_i + f(z_i, k_2) \\ w_{i+1} & = f(z_i, k_2) - x_i \\ \end{align}

 

explore
    float f(float b, float g) { const float b2 = b*b;  return g*b + 2.0*(1.0-g)*b2 / (1+b2);  };

    pNew.x =  kVal[1]*p.y + f(p.x, kVal[0]);
    pNew.y =  - p.x + f(vp.x, kVal[0]);
    pNew.z =  kVal[3]*p.w + f(p.z, kVal[2]);
    pNew.w =  - p.z + f(vp.z, kVal[2]);

\begin{align} x_{i+1} & = x_i - k_0 \centerdot sin(z_i + tan(k_1 \centerdot z_i)) \\ y_{i+1} & = y_i - k_2 \centerdot sin(x_i + tan(k_3 \centerdot x_i)) \\ z_{i+1} & = z_i - k_4 \centerdot sin(y_i + tan(k_5 \centerdot y_i)) \\ \end{align}

 

explore
    pNew.x = p.x - kVal[0] * sin(p.z+tan(kVal[1]*p.z));
    pNew.y = p.y - kVal[2] * sin(p.x+tan(kVal[3]*p.x));
    pNew.z = p.z - kVal[4] * sin(p.y+tan(kVal[5]*p.y));

\begin{align} x_{i+1} & = x_i - k_0 \centerdot sin(y_i + tan(k_1 \centerdot y_i)) \\ y_{i+1} & = y_i - k_2 \centerdot sin(x_i + tan(k_3 \centerdot x_i)) \\ z_{i+1} & = z_i - k_4 \centerdot sin(w_i + tan(k_5 \centerdot w_i)) \\ w_{i+1} & = w_i - k_6 \centerdot sin(z_i + tan(k_7 \centerdot z_i)) \\ \end{align}

 

explore
    pNew.x = p.x - kVal[0] * sin(p.y+tan((kVal[1]*p.y));
    pNew.y = p.y - kVal[2] * sin(p.x+tan((kVal[3]*p.x));
    pNew.z = p.z - kVal[4] * sin(p.w+tan((kVal[5]*p.w));
    pNew.w = p.w - kVal[6] * sin(p.z+tan((kVal[7]*p.z));

\begin{align} x_{i+1} & = x_i - k_0 \centerdot sin(y_i + tan(k_1 \centerdot y_i)) \\ y_{i+1} & = y_i - k_2 \centerdot cos(x_i + tan(k_3 \centerdot x_i)) \\ z_{i+1} & = z_i - k_4 \centerdot sin(w_i + tan(k_5 \centerdot w_i)) \\ w_{i+1} & = w_i - k_6 \centerdot sin(z_i + tan(k_7 \centerdot z_i)) \\ \end{align}

 

explore
    pNew.x = p.x - kVal[0] * sin(p.y+tan((kVal[1]*p.y));
    pNew.y = p.y - kVal[2] * cos(p.x+tan((kVal[3]*p.x));
    pNew.z = p.z - kVal[4] * sin(p.w+tan((kVal[5]*p.w));
    pNew.w = p.w - kVal[6] * sin(p.z+tan((kVal[7]*p.z));

\begin{align} x_{i+1} & = x_i - k_0 \centerdot sin(y_i + tan(k_1 \centerdot y_i)) \\ y_{i+1} & = y_i - k_2 \centerdot cos(x_i + tan(k_3 \centerdot x_i)) \\ z_{i+1} & = z_i - k_4 \centerdot sin(w_i + tan(k_5 \centerdot w_i)) \\ w_{i+1} & = w_i - k_6 \centerdot cos(z_i + tan(k_7 \centerdot z_i)) \\ \end{align}

 

explore
    pNew.x = p.x - kVal[0] * sin(p.y+tan((kVal[1]*p.y));
    pNew.y = p.y - kVal[2] * cos(p.x+tan((kVal[3]*p.x));
    pNew.z = p.z - kVal[4] * sin(p.w+tan((kVal[5]*p.w));
    pNew.w = p.w - kVal[6] * cos(p.z+tan((kVal[7]*p.z));

\begin{align} x_{i+1} & = x_i - k_0 \centerdot sin(y_i + tan(k_1 \centerdot y_i)) \\ y_{i+1} & = y_i - k_2 \centerdot sin(x_i + tan(k_3 \centerdot x_i)) \\ z_{i+1} & = z_i - k_4 \centerdot cos(w_i + tan(k_5 \centerdot w_i)) \\ w_{i+1} & = w_i - k_6 \centerdot cos(z_i + tan(k_7 \centerdot z_i)) \\ \end{align}

 

explore
    pNew.x = p.x - kVal[0] * sin(p.y+tan((kVal[1]*p.y));
    pNew.y = p.y - kVal[2] * sin(p.x+tan((kVal[3]*p.x));
    pNew.z = p.z - kVal[4] * cos(p.w+tan((kVal[5]*p.w));
    pNew.w = p.w - kVal[6] * cos(p.z+tan((kVal[7]*p.z));