Edit and compile if you like:
% A birthday cake % Andrew Stacey \documentclass{article} \usepackage{tikz} \usepackage[active,tightpage]{preview} \PreviewEnvironment{tikzpicture} \setlength\PreviewBorder{10pt}% \begin{document} \begin{tikzpicture} \fill[white!80!black] (3,-.2) circle[x radius=5.05,y radius=1.66666]; \fill[white!80!black] (3,0) circle[x radius=5,y radius=1.66666]; \draw[white!75!black] (3,0) circle[x radius=5,y radius=1.66666]; \fill[white!75!black] (3,0) circle[x radius=4,y radius=1.33333]; \begin{scope} \clip (0,0) arc[x radius=3,y radius=1,start angle=180,delta angle=180] -- ++(0,2) arc[x radius=3,y radius=1,start angle=0,delta angle=-180] -- ++(0,-2); \foreach \k in {0,...,60} { \pgfmathparse{Mod(\k,2) ? "pink" : "purple!50"} \let\linecol=\pgfmathresult \draw[line width=1mm,\linecol] (\k mm,2) -- ++(0,-3); } \end{scope} \fill[opacity=.3] (0,2) arc[x radius=3,y radius=1,start angle=180,delta angle=180] -- ++(0,-.5) arc[x radius=3,y radius=1.25,start angle=0,delta angle=-180] -- ++(0,.5); \fill[pink] (-.25,2) .. controls +(0,-.5) and +(-2,0) .. ++(3.25,-1.25) .. controls +(2,0) and +(0,-.5) .. ++(3.25,1.25) -- ++(0,1) .. controls +(0,.5) and +(2,0) .. ++(-3.25,1.25) .. controls +(-2,0) and +(0,.5) .. ++(-3.25,-1.25); \draw[pink!80!black] (-.25,3) .. controls +(0,-.5) and +(-2,0) .. ++(3.25,-1.25) .. controls +(2,0) and +(0,-.5) .. ++(3.25,1.25) .. controls +(0,.5) and +(2,0) .. ++(-3.25,1.25) .. controls +(-2,0) and +(0,.5) .. ++(-3.25,-1.25); \fill[pink!80!black] (.75,3) .. controls +(0,-.25) and +(-2,0) .. ++(2.25,-.75) .. controls +(2,0) and +(0,-.25) .. ++(2.25,.75) .. controls +(0,.25) and +(2,0) .. ++(-2.25,.75) .. controls +(-2,0) and +(0,.25) .. ++(-2.25,-.75); \foreach \i in {0,...,5} { \pgfmathsetmacro{\yshift}{-\i * (5 - \i) * .07cm} \begin{scope}[xshift=\i * .5cm,yshift = \yshift] \fill[purple!70] (1.5,3) arc[x radius=5pt, y radius=2.5pt, start angle=-180, end angle=0] -- ++(0,2) arc[x radius=5pt, y radius=2.5pt, start angle=0, end angle=-180] -- cycle; \fill[pink] (1.5,5) arc[x radius=5pt, y radius=2.5pt, start angle=-180, end angle=180]; \fill[yellow] (1.5,7.5) ++(5pt,0) .. controls +(0,-1) and +(.5,0) .. ++(0,-2.5) .. controls +(-.5,0) and +(0,-1) .. ++(0,2.5); \end{scope} } \end{tikzpicture} \end{document}
Click to download: birthday-cake.tex • birthday-cake.pdf
Open in Overleaf: birthday-cake.tex