Wolfram Language

Open live version

Make a Logo Design Widget

An interactive widget for designing logos.


code

LogoDesignWidget[] := Manipulate[ Graphics[ Rotate[ Table[Rotate[ { If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (d/n) {1, -1}]]}, Rescale[i, {0, n}, {1, r}]] }, 2 \[Pi] tw (i/n), {0, 0} ], {i, 0, n}], or, {0, 0} ], PlotRange -> 1.5, ImageSize -> 400], {{n, 31, "resolution"}, 1, 51}, {{d, 1, "displacement"}, -10, 10}, {{r, 0, "radius"}, 0, 1}, {{tw, 0, "twist"}, 0, 10}, {{or, 0, "orientation"}, -\[Pi], \[Pi]} ]

how it works

This logo design tool derives from a design by Franco Grignani for the cover of a magazine. Grignanis design is a subtle modification of a simple stack of black and white disks:

With[{n = 31}, Graphics[ Table[{ If[EvenQ[i], Black, White], Disk[{0, 0}, Rescale[i, {0, n}, {1, 0}]] }, {i, 0, n}]] ]

Grignani modified that stack by shifting each white disk slightly in relation to its black background so that the outermost white disk is tangent to its black background disk at the top, and the innermost at the bottom:

With[{n = 31}, Graphics[ Table[{ If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (1/n) {1, -1}]]}, Rescale[i, {0, n}, {1, 0}]] }, {i, 0, n}]] ]

Making that static image interactive is just a matter of replacing With with Manipulate and letting n range over the number of disks:

Manipulate[ Graphics[ Table[{ If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (1/n) {1, -1}]]}, Rescale[i, {0, n}, {1, 0}]] }, {i, 0, n}]], {{n, 31, "resolution"}, 1, 51} ]

To make the amount of displacement interactive as well, add a displacement control:

Manipulate[ Graphics[ Table[{ If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (d/n) {1, -1}]]}, Rescale[i, {0, n}, {1, 0}]] }, {i, 0, n}]], {{n, 31, "resolution"}, 1, 51}, {{d, 1, "displacement"}, -10, 10} ]

Other variations on this design are easy to add as they occur to you. Its trivial to give yourself control over the inner disk radius so that you can explore rings as well as disks:

Manipulate[ Graphics[ Table[{ If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (d/n) {1, -1}]]}, Rescale[i, {0, n}, {1, r}]] }, {i, 0, n}]], {{n, 31, "resolution"}, 1, 51}, {{d, 1, "displacement"}, -10, 10}, {{r, 0, "radius"}, 0, 1} ]

A further variation is provided by a twist control that progressively rotates the disks about the origin as they are stacked. An orientation control lets you vary the global logo orientation. Both controls are implemented via Rotate:

Manipulate[ Graphics[ Rotate[ Table[Rotate[ { If[EvenQ[i], Black, White], Disk[{0, If[EvenQ[i], 0, Rescale[i, {0, n}, (d/n) {1, -1}]]}, Rescale[i, {0, n}, {1, r}]] }, 2 \[Pi] tw (i/n), {0, 0} ], {i, 0, n}], or, {0, 0} ]], {{n, 31, "resolution"}, 1, 51}, {{d, 1, "displacement"}, -10, 10}, {{r, 0, "radius"}, 0, 1}, {{tw, 0, "twist"}, 0, 10}, {{or, 0, "orientation"}, -\[Pi], \[Pi]} ]