If you happen to be in Amsterdam this July 11th, be sure to check out some intothecontinuum GIFs amongst many other international artists at GIF ME FASHION, a fashion GIF exhibition curated by Fleur van Maarschalkerwaart (Studio Ultradeluxe) and Fiona Makkink, at Fashion Week Amsterdam as part of FUTURE GENERATIONS "The Next Day", Westergasterrein - Transformatorhuis
some Visual Insight regarding kaleidocycles from the enlightened, John Baez, over at the American Mathematical Society Blog: http://blogs.ams.org/visualinsight/2015/12/15/kaleidocycle/
Mathematica code:
hthr = Import["hthrtzy.jpg"]; hthrC = ImageData[hthr, "Byte"]; hthrG = ImageData[ColorConvert[hthr, "GrayLevel"], "Byte"]; L = Length@hthrC; waves[x_, y_, w_, a_, t_] := Sin[w ((Cos[a] + Sin[a]) x + (Sin[a] - Cos[a]) y) + t*2 Pi] G[ImgDataG_, ImgDataC_, IS_, s_, N_, w_, A_, A1_, A2_, h_, f_, t_] := Graphics[ Table[ Translate[ {RGBColor[Part[ImgDataC, y, x]/255], Opacity[.6], Disk[{x, -y}, (A1 + A2 (1 - Part[ImgDataG, y, x]/255))*A(1 + Sum[waves[x + 200, y + 50, w, a*2 Pi/N, t], {a, 0, N - 1, 1}]/(2 N))]}, h*{Cos[2 Pi*(t + f (x + y)/L)], Sin[2 Pi*(t + f (x + y)/L)]}], {x, 1, L, s}, {y, 1, L, s}], PlotRange -> {{-15, L + 11}, {15, -L - 11}}, ImageSize -> IS] Manipulate[ G[hthrG, hthrC, 540, 8, 5, .1, 4, .7, 3, 2, 1.5, t], {t, 0, 1}]
Image data courtesy of Marina Abramovic and Sean Kelly Gallery, NY Mathematica code:
MA = ImageCrop[Import["marina.jpg"],1300]; MAc = ImageData[MA, "Byte"]; MAg = ImageData[ColorConvert[MA, "GrayLevel"], "Byte"]; waves[x_, y_, w_, a_, t_] := Sin[w ((Cos[a] + Sin[a]) x + (Sin[a] - Cos[a]) y) + t*2 Pi] Manipulate[ Graphics[ Table[ Translate[ {RGBColor[MAc[[y, x]]/255], Opacity[.8], Disk[{x, -y}, (.7 + 5 (1 - MAg[[y, x]]/255))*3 (1 + Sum[waves[x, y, .07, a* 2 Pi/5, t], {a, 0, 4, 1}]/(210))]}, 3*{Cos[2 Pi*(t + x/1300 + y/1300)], Sin[2 Pi*(t + x/1300 + y/1300)]}], {x,1,1300,15}, {y,1,1300,15}], PlotRange -> {{-15, 1315}, {15, -1315}}, ImageSize -> 500], {t,0,.95,.05}]
Thank you MAI + t for hosting intothecontinuum!
Animated GIFs (700 x 700) Mathematica code:
Dashboard[z_] := RGBColor[54/255, 70/255, 93/255, z]; BG = Raster[ Table[.005 ((i - 500)^2 + (j - 500)^2), {i,1000}, {j,1000}], {Scaled[{0, 0}], Scaled[{1, 1}]}, {1, 1000}, ColorFunction -> Dashboard]; P = {{5, 8, 10}, {4.5, 12, 7}, {3, 16, 10}}; Manipulate[With[{h=P[[k,1]], u=P[[k,2]], s=P[[k,3]]}, Graphics[ Table[ {AbsoluteThickness[h], RGBColor[54/255, 70/255, 93/255], Circle[ {s*Cos[i*2 Pi/u], s*Sin[i*2 Pi/u]}, t + (100 - n) (1 + Sign[100 - n])/2]}, {n, 0, 100, 1}, {i, 0, u - 1, 1}], PlotRange -> {{-16, 16},{-16, 16}}, ImageSize -> 700, Prolog -> BG]], {k,1,3,1}, {t, 0, 1}]
Animated GIF (700 x 700) Mathematica code:
vertices = Table[Table[ RotationTransform[a, {1, 1, 0}, {0, 0, 0}][Tuples[{-1, 1}, 3][[v]]], {v, 1,8, 1}], {a, 0, 2 Pi, Pi/80}]; Edge := {1, 2, 4, 3, 7, 8, 6, 5, 1, 3, 4, 8, 7, 5, 6, 2} CubeTrail[N_, s_, r_, z_, t_] := Graphics[ Table[ Scale[ Translate[{AbsoluteThickness[1.5], Opacity[1], White, Line[ Table[ {vertices[[1 + Mod[t, 80]]][[Edge[[e]]]][[1]], vertices[[1 + Mod[t, 80]]][[Edge[[e]]]][[2]]}, {e, 1, 16, 1}]]}, r*{Cos[2 Pi*(n*t/80 + k)/N], Sin[2 Pi*(n*t/80 + k)/N]}], z^n, r*{Cos[2 Pi*(n*t/80 + k)/N], Sin[2 Pi*(n*t/80 + k)/N]}], {k, 1, N, 1}, {n, 1, s, 1}], PlotRange -> 5, ImageSize -> 700, Background -> RGBColor[54/255,70/255,93/255]] Manipulate[ CubeTrail[4, 8, 3.8, .75, t], {t, 1, 80, 1}]
Animated GIF (700 x 700) Mathematica code:
F[L_, a_, r_, s_, t_] := Table[ {-(r + s*Cos[t])^n*Sin[n*a], (r + s*Cos[t])^n*Cos[n*a]}, {n, 0, L}]; Manipulate[ Graphics[ Table[ Rotate[ Table[ Translate[ Rotate[ {White, Polygon[F[ 160, Pi/2 + (u + k)*2 Pi/5, .975, 0, 0]]}, u*2 Pi, {0, 0}], 3{Cos[(u + k)*2 Pi/5],Sin[(u + k)*2 Pi/5]}], {k, 0, 4, 1}], j*Pi/5, {0, 0}], {j, 0, 5, 5}], PlotRange -> 4, ImageSize -> 700, Background -> RGBColor[54/255, 70/255, 93/255]], {u, 0, 59/60, 1/60}]
Each animated GIF consists of only 2 frames constructed entirely with straight lines and colored black and white. The second frame results from the first by inverting or interchanging the two colors.
Animated GIFs (700 x 700) Mathematica code:
F[L_, a_, r_, s_, t_] := Table[ {-(r + s*Cos[t])^n*Sin[n*a], (r + s*Cos[t])^n*Cos[n*a]}, {n, 0, L}]; P := {{213, 3.2899, 0.997}, {215, 2.7633, 0.996}, {200, 3.3300, 0.996}, {214, 3.2748, 0.997}}; Manipulate[ Graphics[ Polygon[ F[P[[j, 1]], P[[j, 2]], P[[j, 3]], .002, t]], PlotRange -> 1, ImageSize -> 700], {j, 1, 4, 1}, {t, 0, 2 Pi}]
This animated GIF is 20 frames long and takes 2 seconds to repeat itself, but if you pick any point and follow its motion continuously it will take 2000 seconds (about 30 minutes) for the point to return to the same location it was in when you started watching it! How long can you follow a single point?
Mathematica code:
G[p_, q_, a_, b_, c_, t_] := Graphics[ Table[ {Opacity[.7], White, Disk[ {.71*Cos[a (.05*t + n)*Pi/500 + p], Cos[b (.05*t + n)*Pi/500 + q]}, .002*Cos[c (.05*t + n)*Pi/500] + .005]}, {n, 1, 1000}], PlotRange -> {{-.715, .715}, {-1.005, 1.005}}, Background-> RGBColor[54/255,70/255,93/255], ImageSize -> 500] Manipulate[ Show[ G[0, .2, 29, 13, 11, t], G[0, .2, 19, 31, 9, t], G[.3, .29, 3, 23, 17, t], G[0, .3, 43, 7, 3, t], G[.1, .13, 31, 19, 2, t]], {t,1,20,1}]
Mathematica code:
Manipulate[ Graphics[ Table[ {Thickness[.006], RGBColor[54/255,70/255,93/255], Circle[{(16 - t)*Cos[i*Pi/2], (16 - t)*Sin[i*Pi/2]}, (100 - n) (1 + Sign[100 - n])/2]}, {n,0,100,1}, {i,0,3,1}], PlotRange -> {{-40,40}, 7/5{-40,40}}, ImageSize -> {500,700}], {t,0,2.6,.2}]
“Rhythm and repetition are at the root of movement. They create a situation within which the most simple, basic forms start to become visually active. By masking them and repeating them they become more fully present. Repetition acts as a sort of amplifier for visual events, which seen singly would hardly be visible, but to make these basic forms release the full visual energy within them they have to breathe as it were – to open and close, or to tighten up and then relax. A rhythm that is alive has to do with changing pace, and feeling how the visual speed can expand and contract, sometimes go slower and sometimes go faster. The whole thing must live.”
These animations are inspired by Bridget Riley’s “Blaze 1” (1962), and were generated using log-polar transformations.
Mathematica code:
WfPlot[s_, w_, t_] := Graphics[ Table[ {AbsoluteThickness[2], Line[ Table[ {i + If[Mod[i, 2] == 0, s*Sin[j*2 Pi/w + i*2 Pi/6 + t], 0], (-1)^i*.5 + .4*j}, {i, -2, 15}]]}, {j, 1, 69, 1}], PlotRange -> {{1, 20}, {.8, 27.2}}, ImageSize -> {1000,1000}, Background -> RGBColor[54/255, 70/255, 93/255]]; LogPolar[x_, y_] := {Log[Sqrt[x^2 + y^2]], ArcTan[x, y]}; p:={{66,.2},{6,.3},{11,.4}} Manipulate[ ImageResize[ ImageTransformation[ WfPlot[p[[k,1]],p[[k,2]], t], LogPolar[#[[1]], #[[2]]] &, DataRange -> {{-Pi, Pi}, {-Pi, Pi}}], 700], {k, 1, 3, 1}, {t, 0, 2Pi}]
Mathematica code:
S[n_, t_] := Sin[n*3 Pi/50 + t]; Manipulate[ Show[ Table[ Plot[ 100 - n + (20*Abs[S[n,t]] + .02)*Exp[-(x - 4*S[n, t])^2/Abs[S[n,t]]], {x, -10, 10}, PlotStyle -> Directive[White, Thick], PlotRange -> {{-7, 7}, {0, 100}}, Filling -> Axis, FillingStyle -> White, Axes -> False, AspectRatio -> Full, ImageSize -> {500, 750}, Background -> RGBColor[54/255, 70/255, 93/255]], {n, 1, 100, 1}]], {t, .001, 2 Pi + .001, (2 Pi + .001)/30}]
Algorithmically generated using circles subjected to constrained randomness
Animated GIFs (600x600)
Mathematica code:
RR[n_, m_] := (SeedRandom[n*m]; RandomReal[]) L[t_, Q_, g_, i_] := Sum[ Exp[-(t - (RR[i, 5*Q] + j))^2/g], {j, {-1, 0, 1}}] G[c_, F_, P_, s_, o_, g_, A_, a_, w_, t_, r_, Q_, pr_, is_] := Graphics[ Table[ Table[ {RGBColor[RR[i, Q], RR[i, 2*Q], RR[i, 3*Q], o + A*L[t, 5*Q, g, i]], Disk[ RotationTransform[(k + (-1)^(i*w)*t*a)*2 Pi/F] [{r*RR[2 i, 4*Q], r*RR[2 i + 1, 4*Q]}], s*L[t, 5*Q, g, i]]}, {k, 0, F - 1, 1}], {i, 1, P, 1}], PlotRange -> pr, ImageSize -> is, Background -> c] Manipulate[[ G[RGBColor[54/255, 70/255, 93/255], 12, 50, .2, 0, .1, .25, 1, 1, t, 1, Q, 1.6, 600], {Q, {41, 72, 1, 76}}, {t, 0, .96, .04}],
Mathematica code:
Manipulate[ Graphics[ Table[{RGBColor[54/255,70/255,93/255], Disk[{x,y}, .55*(1 + Sum[ Sin[(Cos[a*2Pi/11] + Sin[a*2Pi/11])x + (Sin[a*2Pi/11] - Cos[a*2Pi/11])y + t*2Pi], {a,0,10,1}]/22)]}, {x,-25,25,1}, {y,-35,35,1}], PlotRange -> {{-25, 25}, 7/5*{-25, 25}}, ImageSize -> {500, 700}], {t, 0, 1}]
Mathematica code:
A[N_, t_] := Graphics[ Table[ Rotate[ Table[ {GrayLevel[Abs[j - 1]], EdgeForm[GrayLevel[1]], Disk[{0, 0}, N - n + j, {Pi, 0}]}, {j, 1, 0, -1}], Pi*(N - n + 1) (1 + Sin[t*Pi - Pi/2]), {0, 0}], {n, 0, N, 1}], PlotRange -> N + 1.5, ImageSize -> 500] Manipulate[A[15,t],{t,0,1}]
Making use of the golden angle.
Mathematica code:
d[x_, y_, r_, c_, s_, F_, n_] := {Disk[ RotationTransform[n*2.4][{x*c^n, y}], r*c^n], Table[ {White, Disk[ RotationTransform[k*2 Pi/F, RotationTransform[n*2.4][{x*c^n, y}]] [RotationTransform[n*2.4][{x*c^n, y}] + c^n {r - s, 0}], s*c^n]}, {k, 0, F - 1, 1}]} Manipulate[ ImageCrop[ Graphics[ Table[ d[3, 0, 1 - .1*Sin[t + n*Pi/110]^2, 1.025, .03, 24, n], {n, 0, 110, 1}], PlotRange -> 30, Background -> Black, ImageSize -> 700], {500, 700}], {t, 0, 39 Pi/40, Pi/40}] Manipulate[[ ImageCrop[ Graphics[ Table[ d[3, 0, 1 - .1*Sin[t*3 Pi/40 + n*2 Pi/110]^2, 1.025, .03, 24, n], {n, If[t < 66 , 0, 2 (t - 65)], If[t < 56, 2 t, 110], 1}], PlotRange -> 30, Background -> Black, ImageSize -> 700], {500, 700}], {t, 0, 120, 1}]
