A code to generate a membrane-like surface with some curvature and randomness to the "molecules" constituting the surface.

Edit and compile if you like:
% Membrane-like surface% Author: Yotam Avital\documentclass{article}\usepackage{tikz}\usepackage[active,tightpage]{preview}\PreviewEnvironment{tikzpicture}\setlength\PreviewBorder{5pt}%\begin{document}\begin{tikzpicture}\def\nuPi{3.1459265}\foreach \i in {11,10,...,0}{% This one doesn't matter\foreach \j in {5,4,...,0}{% This will crate a membrane% with the front lipids visible% top layer\pgfmathsetmacro{\dx}{rand*0.1}% A random variance in the x coordinate\pgfmathsetmacro{\dy}{rand*0.1}% A random variance in the y coordinate,% gives a hight fill to the lipid\pgfmathsetmacro{\rot}{rand*0.1}% A random variance in the% molecule orientation\shade[ball color=red] ({\i+\dx+\rot},{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)}) circle(0.45);\shade[ball color=gray] (\i+\dx,{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)-0.9}) circle(0.45);\shade[ball color=gray] (\i+\dx-\rot,{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)-1.8}) circle(0.45);% bottom layer\pgfmathsetmacro{\dx}{rand*0.1}\pgfmathsetmacro{\dy}{rand*0.1}\pgfmathsetmacro{\rot}{rand*0.1}\shade[ball color=gray] (\i+\dx+\rot,{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)-2.8}) circle(0.45);\shade[ball color=gray] (\i+\dx,{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)-3.7}) circle(0.45);\shade[ball color=red] (\i+\dx-\rot,{0.5*\j+\dy+0.4*sin(\i*\nuPi*10)-4.6}) circle(0.45);}}\end{tikzpicture}\end{document}
Click to download: membrane-surface.tex • membrane-surface.pdf
Open in Overleaf: membrane-surface.tex