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. Grignani’s 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. It’s 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]}
]