Mathematica code:

RotAxis = Table[Table[  Table[    R[o, {.01 + x, .01 + y, 0}, {0, 0, 0}],    {o, 0, 2 Pi, 2 Pi/80}], {x, -10, 10, 1}], {y, -10, 10, 1}]Edge := {1, 2, 4, 3, 7, 8, 6, 5, 1, 3, 4, 8, 7, 5, 6, 2}CubeProjections[color_, pr_, b_, s_, h_, w_, m_, o_] :=Graphics[ Table[  Translate[   {AbsoluteThickness[h], If[color == 0, Black, White],    Line[     Table[      Table[      RotAxis[[11 + y]][[11 + x]]      [[1 + Mod[Round[ (Pi + ArcTan[.01 + x, .01 + y])/2Pi] + o, 80]]]      [[Edge[[k]]]][[c]],       {c, 1, 2, 1}],      {k, 1, 16, 1}]]},   {s*x, s*y}],  {x, -b, b, 1}, {y, -b, b, 1}], PlotRange -> {{-pr, pr}, {-pr, pr}}, ImageSize -> 500,  Background -> If[color == 0, White, Black] ]Manipulate[PM = {color, pr, b, s, h, w, m, a};CubeProjections[color, pr, b, s, h, w, m, a],{color, 0, 1, 1}, {{pr, 17}, 1, 52}, {{b, 5}, 1, 10, 1},{{s, 3}, 0, 5}, {{h, 1}, .01, 10},{{w, 1}, 0, 20, 1},{{m, 1}, 0, 20, 1},{a, 1, 80, 1}]P = {0, 20, 5, 3.6, 1.5, 1, 1, 1}Manipulate[CubeProjections[P[[1]],P[[2]],P[[3]],P[[4]],P[[5]],P[[6]],P[[7]],a],{a, 1, 79, 2}]
Filed under: #GIF  #Mathematica  #cubes  #projections

Mathematica code:

RotAxis = Table[Table[  Table[    R[o, {.01 + x, .01 + y, 0}, {0, 0, 0}],    {o, 0, 2 Pi, 2 Pi/80}], {x, -10, 10, 1}], {y, -10, 10, 1}]Edge := {1, 2, 4, 3, 7, 8, 6, 5, 1, 3, 4, 8, 7, 5, 6, 2}CubeProjections[color_, pr_, b_, s_, h_, w_, m_, o_] :=Graphics[ Table[  Translate[   {AbsoluteThickness[h], If[color == 0, Black, White],    Line[     Table[      Table[      RotAxis[[11 + y]][[11 + x]][[o]][[Edge[[k]]]][[c]],       {c, 1, 2, 1}],      {k, 1, 16, 1}]]},   {s*x, s*y}],  {x, -b, b, 1}, {y, -b, b, 1}], PlotRange -> {{-pr, pr}, {-pr, pr}}, ImageSize -> 500,  Background -> If[color == 0, White, Black] ]Manipulate[PM = {color, pr, b, s, h, w, m, a};CubeProjections[color, pr, b, s, h, w, m, a],{color, 0, 1, 1}, {{pr, 17}, 1, 52}, {{b, 5}, 1, 10, 1},{{s, 3}, 0, 5}, {{h, 1}, .01, 10},{{w, 1}, 0, 20, 1},{{m, 1}, 0, 20, 1},{a, 1, 80, 1}]P = {0, 20, 5, 3.6, 1.5, 1, 1, 1}Manipulate[CubeProjections[P[[1]],P[[2]],P[[3]],P[[4]],P[[5]],P[[6]],P[[7]],a],{a, 1, 79, 2}]
Filed under: #GIF  #Mathematica  #cubes  #projections

Mathematica code:

Rot =  Table[  Table[   RotationTransform[a, {1, 1, 0}, {0, 0, 0}][Tuples[{-1, 1}, 3][[v]]],  {v, 1, 8, 1}],{a, 0, 2 Pi, 2 Pi/100}]Edge := {1, 2, 4, 3, 7, 8, 6, 5, 1, 3, 4, 8, 7, 5, 6, 2}CubeProjections[color_, pr_, b_, s_, h_, w_, m_, o_] :=Graphics[ Table[  Translate[   {AbsoluteThickness[h], If[color == 0, Black, White],    Line[     Table[      Table[       Rot[[1 + Mod[w (y + m*x) + a, 100]]][[Edge[[k]]]][[c]],       {c, 1, 2, 1}],      {k, 1, 16, 1}]]},   {s*x, s*y}],  {x, -b, b, 1}, {y, -b, b, 1}], PlotRange -> {{-pr, pr}, {-pr, pr}}, ImageSize -> 500,  Background -> If[color == 0, White, Black] ]Manipulate[PM = {color, pr, b, s, h, w, m, a};CubeProjections[color, pr, b, s, h, w, m, a],{color, 0, 1, 1}, {{pr, 17}, 1, 52}, {{b, 5}, 1, 10, 1},{{s, 3}, 0, 5}, {{h, 1}, .01, 10},{{w, 1}, 0, 20, 1},{{m, 1}, 0, 20, 1},{a, 1, 100, 1}]P = {1, 28, 9, 3, 1.4, 1, 1, 30}Manipulate[CubeProjections[P[[1]],P[[2]],P[[3]],P[[4]],P[[5]],P[[6]],P[[7]],a],{a, 48, 0, -2}]

2-D projections of rotating cubes

Mathematica code:

Rot =  Table[  Table[   RotationTransform[a, {1, 1, 0}, {0, 0, 0}][Tuples[{-1, 1}, 3][[v]]],  {v, 1, 8, 1}],{a, 0, 2 Pi, 2 Pi/100}]Edge := {1, 2, 4, 3, 7, 8, 6, 5, 1, 3, 4, 8, 7, 5, 6, 2}CubeProjections[color_, pr_, b_, s_, h_, w_, m_, o_] :=Graphics[ Table[  Translate[   {AbsoluteThickness[h], If[color == 0, Black, White],    Line[     Table[      Table[       Rot[[1 + Mod[w (y + m*x) + a, 100]]][[Edge[[k]]]][[c]],       {c, 1, 2, 1}],      {k, 1, 16, 1}]]},   {s*x, s*y}],  {x, -b, b, 1}, {y, -b, b, 1}], PlotRange -> {{-pr, pr}, {-pr, pr}}, ImageSize -> 500,  Background -> If[color == 0, White, Black] ]Manipulate[PM = {color, pr, b, s, h, w, m, a};CubeProjections[color, pr, b, s, h, w, m, a],{color, 0, 1, 1}, {{pr, 17}, 1, 52}, {{b, 5}, 1, 10, 1},{{s, 3}, 0, 5}, {{h, 1}, .01, 10},{{w, 1}, 0, 20, 1},{{m, 1}, 0, 20, 1},{a, 1, 100, 1}]P = {0, 26.7, 7, 3.5, 1.3, 5, 1, 0}Manipulate[CubeProjections[P[[1]],P[[2]],P[[3]],P[[4]],P[[5]],P[[6]],P[[7]],a],{a, 48, 0, -2}]
Filed under: #GIF  #Mathematica  #projections  #wavy  #cubes
Anonymous
Do you mind people porting your Mathematica code to other languages?

of course not! Let’s call it ours*. Feel free but please at least share the output if possible

i prefer to adopt a loose definition of art in which the object under consideration may not be intended as art in its initial conception by its creator, but is rather made into art by whoever allows themselves to perceive the object with an artistic perspective. With this definition what constitutes art is a matter of subjective opinion or willingness. This will allow us to talk about “gif-art” more generally as just “gifs”, and i think this is ok because what i like about gif-art is equally true for any kind of gif—its ability to loop.

I think the main purpose of the animated gif is to express things in the medium that exists between a still image and videos of arbitrarily long length. However, its important the duration of the gif be kept short (a couple of seconds at most). It is in this optimum time interval where the content in the gif has the most impact because of  how long it takes the gif to repeat, which we’ll refer to as the gif’s loop. If the gif takes too long to loop then it may not reinforce its content with as dramatic of an effect. Gifs don’t have to have infinite loops, and can be made to loop for just some number of times only, or not loop at all, but gifs of this variety seem rare.

To me this endless looping feature is the essence of the gif. The loop has the ability to create an additional effect for the viewer that would not be present otherwise, which is kind of peculiar because there is no new information being introduced. Yet, by seeing something loop over and over the gif is able to capture and exaggerate it to a greater level. This is a nice quality and applies to almost any thing that is looped—whether its something beautiful, funny, awkward, amazing, or trippy, etc.— and its this versatility in expression that shows how effective the gif really is.

I am particularly interested in gifs that loop seamlessly where there is no obvious beginning or end to the gif. Gifs that have this property exemplify another essential feature of the loop which is its ability to make some event seem timeless or eternal. Exploiting this feature of gifs offers interesting and creative directions for art itself, but honestly i just like to stare at them and sometimes find myself staring at a gif for long enough that i won’t admit how long really.

Another good example where looping is used as a creative means different than this sort of perpetual motion just described is actually in your work at MiRon. This is interesting because although the gif is not trying to directly capture motion it uses it to convey a sense of depth both literally and figuratively. Its like an enhanced image.

i also think its worth mentioning the significance of gifs from a current cultural aspect. I think its completely justified  that “gif” (as a verb) was recently chosen by Oxford American Dictionaries as word of the year. The gif medium gaining popularity is no accident for many reasons. Despite being in this current digital age which allows gifs to be shared in unprecedented ways, i feel that society is at a point where not only are gifs welcomed but needed. Its almost as if the existence of the gif is to serve us through all of this immense information and media exchange we may be subject to on a daily basis. Again, this necessity is met by the gifs ability to loop. Like, we need to be reminded that its really just these short finite moments in our experience we really care about, and this reminder is reminding us repeatedly right after it reminds us over and over again.

TLDR:
i like gifs because i like things that loop.

circles moving in circles

Mathematica code:

Circles[color_, X_, Y_, s_, r_, IS_] := Graphics[  Table[   {color,    Disk[{x, y} + s, r]},   {x, -X, X}, {y, -Y, Y}],  ImageSize -> IS]W[x_, y_, w_, a_, t_] :=  w ((Cos[a] + Sin[a]) x + (Sin[a] - Cos[a]) y) + t*2 PiManipulate[ Show[  Circles[Black, X, Y, 0, r, 500],  Circles[White, X, Y,   .25 r*{Cos[W[x, y, w, a, t]], Sin[W[x, y, w, a, t]]}, r/2, 500]  ],{X, 10, 100, 1}, {Y, 10, 100, 1},{{r, .5}, .1, 1}, {{w, 1}, 0, 1}, {a, 0, 2 Pi},{t, 0, 1}]Manipulate[ Show[  Circles[Black, 10, 10, 0, .6+ .2Cos[t*2Pi/4], 500],  Circles[White, 10, 10,   .25 (.6+ .2Cos[t*2Pi/4])*{Cos[W[x, y, .75, 3Pi/2, t]], Sin[W[x, y, .75, 3Pi/2, t]]},   (.6+ .2Cos[t*2Pi/4])/2, 500] ],{t, 0, 4}]
Filed under: #GIF  #Mathematica  #circles  #wavy  #phase

Mathematica code:

Circles[Ccolor_, BGcolor_, X_, Y_, s_, r_, IS_] := Graphics[  Table[   {Ccolor,    Disk[{x, y} + s, r]},   {x, -X, X}, {y, -Y, Y}],  ImageSize -> IS, Background -> BGcolor,   PlotRange -> {{-X-1, X+1}, {-Y-1, Y+1}}]W[x_, y_, w_, a_, t_] :=  w ((Cos[a] + Sin[a]) x + (Sin[a] - Cos[a]) y) + t*2 PiManipulate[Circles[ If[color==0,White, Black],If[color==0, Black, White], X, Y, .25 r*{Cos[W[x, y, w, a, t]], Sin[W[x, y, w, a, t]]},  r/2, IS],{color,0,1,1}, {IS, {{500}, {500, 700}}},{X, 10, 100, 1}, {Y, 10, 100, 1},{{r, .5}, .1, 1},{{w, 1}, 0, 1},{a, 0, 2 Pi},{t, 0, 1}]Manipulate[ Circles[  White, Black, 10, 14,  .25 (.8)*{Cos[W[x, y, .6, 3Pi/2, t]], Sin[W[x, y, .6, 3Pi/2, t]]},  .8/2, {500,700}],{t, 0, 1}]
Filed under: #GIF  #Mathematica  #circles  #wavy

Mathematica code:

Circles[Ccolor_, BGcolor_, X_, Y_, s_, r_, IS_] := Graphics[  Table[   {Ccolor,    Disk[{x, y} + s, r]},   {x, -X, X}, {y, -Y, Y}],  ImageSize -> IS, Background -> BGcolor,   PlotRange -> {{-X-1, X+1}, {-Y-1, Y+1}}]W[x_, y_, w_, a_, t_] :=  w ((Cos[a] + Sin[a]) x + (Sin[a] - Cos[a]) y) + t*2 PiManipulate[Circles[ If[color==0,White, Black],If[color==0, Black, White], X, Y, .25 r*{Cos[W[x, y, w, a, t]], Sin[W[x, y, w, a, t]]},  r/2, IS],{color,0,1,1}, {IS, {{500}, {500, 700}}},{X, 10, 100, 1}, {Y, 10, 100, 1},{{r, .5}, .1, 1},{{w, 1}, 0, 1},{a, 0, 2 Pi},{t, 0, 1}]Manipulate[ Circles[  White, Black, 10, 14,  .25 (.5)*{Cos[W[x, y, .25, 3Pi/2, t]], Sin[W[x, y, .25, 3Pi/2, t]]},  .5/2, {500,700}],{t, 0, 1}]
Filed under: #GIF  #Mathematica  #circles  #wavy

This was asked to patternstream so i will only answer in regards to that.

As mentioned in the last question, i don’t really consider myself making the patterns.

The time it takes Mathematica to create each .gif varies for different patterns. This time mostly depends on the content of the graphics and how many frames each .gif animation consists of, which is generally anywhere from 15-30 frames. The time is largely dependent on the degree of rotational symmetry that the pattern exhibits. This directly corresponds to the amount of ‘ripples’ present in the space.

All the patterns posted on the stream thus far have all resulted from the same code. The algorithm is straightforward enough that it was constructed in no more than 30 minutes. My computer equipped with a 2.4 GHz Intel Core i5 processor takes anywhere between 15 to 45 seconds for the average pattern. I expect this time could be sped up at least a little if the algorithm was optimized, and if a lot of the trigonometric functions (Sins and Cosines) were calculated in advance.

i don’t know if this questions is asking why the code is written inside the text box specifically, or why the code is even included at all. The reason for the former is for practical purposes and the latter is more of a matter of principle.

By placing the code inside that box certain formatting features like spacing and line breaks are preserved. Otherwise, these qualities may get lost or altered if text is written outside of this box. Controlling text in this way is important for things like code or poetry where the visual presentation of the text is an important factor for determining meaning.

i have acknowledged that the existence of this text box messes with the formatting on certain themes on Tumblr making the text in the box overlap other things or get cut off. To prevent this you can remove the code, but sometimes deleting the code alone will not remove the box. To make sure the box is deleted check the posts HTML and remove the “<pre>…<\pre>” part.

The reason why the code is included in the first place is mainly for reference—both personal and for others. You need to have the Mathematica software to run it, and doing so allows one to do more than just look at the animation. Viewing the animation in Mathematica allows the user to control various things like playback speed, direction, and being able to pause the animation.  Also, the code is usually written to include an interactive interface which enables the user to change various parameters in the code. Changing these parameters changes the graphics which can result in many different interesting variants. i want to encourage others to explore this feature. In fact, most of the content that gets posted here is selected from this initial exploration of parameter space!

More importantly, i feel that including the code is a proper way of providing the “source” of the image. i don’t really consider the Mathematica output posted here to be created by “me”. Even if i wrote the code its nothing so impressive or innovative that someone else couldn’t do to create something very similar if they wanted to. I think this is very different in nature from other work like humans painting or drawing where there is a strong element of originality.

In addition to serving as a source i like the idea of the code complementing the graphics. Seeing something so visual or unexpected manifested by something so intangible and abstract like mathematical symbols is a remarkable property of nature. i find that to be incredibly fascinating, and would hope others do as well!

Filed under: #Mathematica

going away and offline for a little while. messages will probably be replied to by the end of the month. patternstream is queued for days. keep an eye out and be happy! everything is so lovely!!

(x)

(x)

Filed under: #personal  #pattern stream  #C24

Flying Lotus released a brilliant and beautiful album the other week,
but I still can’t get over how good the last release “Cosmogramma” was.
This animation in an interpretation of that album cover.

Mathematica code:

rr[n_] := (SeedRandom[n]; RandomReal[])Rays[Q_, h_, a_, b_, N_, s_, PR_] := Graphics[   Table[    {AbsoluteThickness[h],     Line[      {{a*Cos[(n + s*rr[Q*n])*2 Pi/N], a*Sin[(n + s*rr[Q*n])*2 Pi/N]},        {b*Cos[(n + s*rr[Q*n])*2 Pi/N], b*Sin[(n + s*rr[Q*n])*2 Pi/N]}}           ]},  {n, 1, N, 1}],  PlotRange -> PR, ImageSize -> 500]Spheres[U_, R_, op_, z_, p_, w_, D_, PR_] := Graphics[  Table[   {Opacity[op],    Disk[      Mod[z + R*rr[3*U*d], R]*{Cos[2 Pi*rr[U*d]], Sin[2 Pi*rr[U*d]]},     Mod[z + R*rr[3*U*d], R]^p*w]},  {d, 1, D, 1}], PlotRange -> PR, ImageSize->500]Manipulate[ Show[  Rays[t, 1.75, .1, 3, 225, 1, 1],  Spheres[18, 1.3, 1, 1.3 t/12, 1.5, .11, 15, 1]], {t, 1, 12, 1}]

Come visit the

~*~~*~~~*pattern stream*~~~*~~*~

A new project on Tumblr inspired by interference phenomenon and Moiré patterns consisting exclusively of GIF animations created with Mathematica.

There are already 50+ patterns in the stream!

Follow along for new patterns as the algorithm evolves from its primitive stage.

Symmetry in Nature

Nanoscale Protein Assemblies

Files from the Protein DataBank, rendered with Qutemol.

Sometimes the existence of certain symmetries in nature always manage to surprise me. Its as if they were some kind of magical coincidence or something. The rotational symmetries manifested in these protein structures is a good example, because when taken individually it seems that the configuration of each little protein is so inconsequential to the larger structure that it is part of. In a sense, this is very much the case since slight variations in size or position of a particular protein would not really effect the larger scheme of things so much.  I think this property of having certain degrees of variability plays an important role in the essence of this whole phenomenon, because it implies that whatever structure that is allowed to exist on the larger scale is sort of independent of the smaller scale to a certain extent. Therefore, what kind of structure happens to be observed is one whose existence satisfies some sort of high probability state (or most likely configuration) amongst all possible variants of what could be. I expect that in this case, the relevant physical forces that are dominant for the more global protein assemblies shown here are acting in such a way to minimize the overall energy and entropy present in the system. These quantities are some of the main guiding elements in a physical systems behavior. Rotational symmetries about a single point usually posses the ability to cancel and balance opposing forces just right allowing for optimum stability.

tl;dr :

It seems to be the case that when you wonder “why and how could something be the way it is” and really think about it you will find that it couldn’t really be any other way!

Filed under: #multiverse  #why?  #science  #physics  #biology