**Update 2**: Using `tr` with `ContourPlot` and `ContourPlot3D`: ClearAll[tr] tr[n_] := (2 n^2 + (-1)^n)/4; ContourPlot[Evaluate[(x - tr[#])^2 + y^2 == #^2 & /@ Range[10]], {x, -1, 65}, {y, -10, 10}, AspectRatio -> Automatic, PlotRange -> {{-1, 65}, {-15, 15}}, Frame -> False] [![enter image description here][1]][1] ContourPlot3D[Evaluate[(x - tr[#])^2 + y^2 + z^2 == #^2 & /@ Range[10]], {x, -1, 65}, {y, -10, 10}, {z, -15, 15}, Mesh -> None, ContourStyle -> Opacity[.5], BoxRatios -> Automatic, PlotRange -> {{-1, 65}, {-15, 15}, {-15, 15}}, ViewPoint -> Front, Boxed -> False, Axes -> False , PlotPoints -> 60] [![enter image description here][2]][2] **Update:** To generate a list of spheres similar to the circles in OP (sphere `k` just touching sphere `k-2`): ClearAll[tr] tr[n_] := (2 n^2 + (-1)^n)/4; Graphics[Circle[{tr @ #, 0}, #] & /@ Range[10]] [![enter image description here][3]][3] Graphics3D[{Opacity[.5], Sphere[{tr @ #, 0, 0}, #] & /@ Range[10]}, Boxed -> False] [![enter image description here][4]][4] **Original answer:** You can use [`Translate`](https://reference.wolfram.com/language/ref/Translate.html) and [`Scale`](https://reference.wolfram.com/language/ref/Scale.html) `Sphere[]` as follows: radii = Range[5]; Graphics3D[Translate[Scale[Sphere[], #], {#^2, 0, 0}] & /@ radii] [![enter image description here][5]][5] or translate to leave gaps between spheres: translations = 2 Accumulate[radii]; Graphics3D[MapThread[Translate[Scale[Sphere[], #], {#2, 0, 0}] &, {radii, translations}]] [![enter image description here][6]][6] [1]: https://i.sstatic.net/AqXcy.png [2]: https://i.sstatic.net/Et02E.png [3]: https://i.sstatic.net/gXosW.png [4]: https://i.sstatic.net/a998N.png [5]: https://i.sstatic.net/B03CX.png [6]: https://i.sstatic.net/U0Skq.png