



Our







Take a simple string with some simple formatting: string = Style["2014", FontFamily -> "Arial", 11];

Let's Rasterize, Binarize and Rotate the resulting image to the right by 90 degrees (necessary for to adjust for different coordinate systems in images and WL arrays): image = ImageRotate[Binarize@Rasterize[string], -90 Degree];

Convert the image to a set of numbers corresponding to the two color values??, because it was binarized (1 - white, 0 - black): imageData = ImageData[image];

Translate the image into a set of points, taking the indices of black pixels in Cartesian coordinates: points = N[Position[imageData, 0]];

Look at the resulting set of points: Graphics[Point[points], ImageSize -> 500]





Find how many points there are in the image: lengthP = Length[points]

(* Out[] = 61 *)



We will now define a function, which solves the differential equation describing the pendulum with damping:

sol[x0_: 1, v0_: 0, s_: 1] := sol[x0, v0, s] =

NDSolve[{x''[t] + s x'[t] + 9.8 Sin[x[t]] == 0, x[0] == x0, x'[0] == v0}, x, {t, 0, 40}]



Here are some auxiliary functions that convert the differential equation obtained above into coordinates of the pendulum: coord[t_, x0_: 1, v0_: 0, s_: 1] := coord[t, x0, v0, s] = x[t] /. sol[x0, v0, s][[1]];



rC[t_, {a_: 0, b_: 0}, R_: 1, x0_, v0_, s_] :=

rC[t, {a, b}, R, x0, v0, s] = {a, b} + R {Cos[coord[t, x0, v0, s] - Pi/2], Sin[coord[t, x0, v0, s] - Pi/2] + 1};



We now construct a function that transforms each of the points in a row in 2014, to a pendulum, which runs from a random position, with random initial velocity and suspended on a string of random length and has a random color: color := Hue[RandomReal[{0, 1/5}]];



graphicsData[t_] =

Table[{R, x0, v0, s} = {RandomInteger[{1, 10}],

RandomReal[{-Pi, Pi}], RandomReal[{0, 1}], RandomReal[{0.2, 1}]};

currentCoords = rC[t, points[[n]], R, x0, v0, s];

{{LightGray, Thick, Line[{currentCoords, points[[n]] + {0, R}}]},

{AbsolutePointSize[6], Gray, Point[points[[n]] + {0, R}], White,

AbsolutePointSize[3], Point[points[[n]] + {0, R}]},

AbsolutePointSize[15], color, Point[currentCoords]},

{n, 1, lengthP}];



Finally ready to go greeting-manipulator Manipulate[

Graphics[graphicsData[t], Background -> Lighter[Gray, 0.9],

PlotRange -> {{-1, 30}, {0, 22}}, ImageSize -> 550],

{{t, 0, "time"}, 0, 40, 1/48, AnimationRate -> 24, Appearance -> "Open"},

SaveDefinitions -> True, FrameMargins -> 0]



I guess it is typical for Russian greetings to come with necessity to brush up on your theoretical mechanics. As you can see below there are 61 randomly constructed friction-damped pendulums swinging in chaos just to eventually converge to cheerful red 2014  which is inscribed in their stable equilibrium positions. Watch them here dancing under inspirational classical music.Our sister Russian community counts almost 2000 members from all around Eastern Europe and beyond. Over the holidays they have enjoyed this Wolfram Language artwork designed by Roman Osipov and wish to share it with us. Original notebook in Russian can be dowloaded here . So let me translate the inner workings.Take a simple string with some simple formatting:Let's Rasterize, Binarize and Rotate the resulting image to the right by 90 degrees (necessary for to adjust for different coordinate systems in images and WL arrays):Convert the image to a set of numbers corresponding to the two color values??, because it was binarized (1 - white, 0 - black):Translate the image into a set of points, taking the indices of black pixels in Cartesian coordinates:Look at the resulting set of points:Find how many points there are in the image:We will now define a function, which solves the differential equation describing the pendulum with damping:Here are some auxiliary functions that convert the differential equation obtained above into coordinates of the pendulum:We now construct a function that transforms each of the points in a row in 2014, to a pendulum, which runs from a random position, with random initial velocity and suspended on a string of random length and has a random color:Finally ready to go greeting-manipulator