cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to move from signal modeling to system modeling at the first JMP Aerospace Analytics webinar. Register. June 18, 1 p.m. US Eastern Time.

Uncharted

Choose Language Hide Translation Bar
Craige_Hales
Super User
Disorganization

 Playing with a square matrix of random numbers between zero and one. I was hoping for a more dynamic video; the rules in the loop settle into a fairly stable image in just a few thousand iterations...I threw away more than 8,000 of the 10,000 images at the end. The goal of the angle calculations in the loop is to look at points a little ways forward in the circle to determine the fate of the current point. The two videos are identical, except for the forward/reverse sequence of the frames. Forward is the order they are generated in, starting random and ending less random. Reverse ends in random data. The most interesting features are the thin rainbow bands created by the spectral color theme and the heatmap function. It takes many seconds to generate each frame; set the scale to .25 to speed it up.

 

dir = "D:\Chales\random\";
pad=5;
scale=1;
bitmap = J( 1200*scale +2*pad+1, 1200*scale + 2*pad + 1, Random Uniform( 0, 1 ) );//randomnormal(.5,1));//
New Window( "random", holder = H List Box( New Image( "rgb", {bitmap, bitmap, bitmap} ) ) );
nnn = 2e6;
For( i = 1, i <= 10000, i++, 
    (holder << child) << delete;
    bitmapt = bitmap[pad :: (N Rows( bitmap ) - pad), pad :: N Cols( bitmap ) - pad];
    img = New Image( Heat Color( bitmapt, "spectral" ) );
    img << saveImage( dir || "p" || Char( nnn ) || ".png", "png" );
    nnn += 1;
    holder << append( img );
    holder << updatewindow;
    Print( i );
    Wait( .02 );
    Parallel Assign(
        {thresholdx = Mean( bitmap ), source = bitmap, nr = N Rows( bitmap ), nc = N Cols( bitmap ), rmid = N Rows( bitmap ) / 2, cmid =
        N Cols( bitmap ) / 2, rate = .96, speed = 100, power=.1},
        bitmap[r, c] = If(
            angle = ATan( r - rmid, c - cmid );
            radius = Sqrt( (c - cmid) ^ 2 + (r - rmid) ^ 2 );
            angle = angle - speed / (radius ^ power);
            rr = ((rmid + Sin( angle ) * radius));
            If(
                rr < 2, rr = 2,
                rr > nr - 1, rr = nr - 1
            );
            cc = ((cmid + Cos( angle ) * radius));
            If(
                cc < 2, cc = 2,
                cc > nc - 1, cc = nc - 1
            );
           // show(rr,cc);
            Try( Sum( source[rr - 1 :: rr + 1, cc - 1 :: cc + 1] ) / 9 < thresholdx, Show( rr, cc ) );
        , 
            Max( 0, source[r, c] * rate )
        ,
            Min( 1, source[r, c] / rate )
        )
    );
);
Print( "done" );

 

 

Last Modified: Sep 1, 2018 9:57 AM