I wonder whether it is possible to draw the "logo" of string theory with LaTeX. I think it is doable, but not sure how to do it. Any guru wants to give it a shot?

3-D projection of a Calbi-Yau manifold

Source: https://commons.wikimedia.org/wiki/File:Calabi-Yau-alternate.png and (in better quality) https://commons.wikimedia.org/wiki/File:Calabi-Yau.png (both own work by Lunch; CC BY-SA 2.5)

  • 2
    In TeX?!! I don't believe it is possible.
    – Sigur
    Nov 9 '13 at 14:59
  • 5
    As long as you can provide us with its function to plot, PSTricks can happily do it, IMHO. Nov 9 '13 at 15:21
  • 2
    @Marienplatz, here is it: en.wikipedia.org/wiki/Calabi%E2%80%93Yau_manifold
    – Sigur
    Nov 9 '13 at 16:34
  • 3
    The problem is on the borders of TeX & Co., but it is interesting, so let our PSTricks ot TikZ/PGF specialists find a solution. I am voting for reopening. Nov 9 '13 at 18:29
  • 3
    I would second @Marienplatz : if you manage to provide a "suitable" description of the involved surface(s) along with the color information, we can think about it. "Suitable" means either a parameterized surface x(u,v), y(u,v), z(y,v) with color data C or a huge data table X Y Z C where C can be RGB or scalar color values. But a task like "do research on string theory to understand suitable representations of the object given as rendition" is unrelated to tex.sx . Unfortunately, the mentioned wikipedia link does not appear to answer that question. Nov 10 '13 at 11:55

I searched a bit on the net and found a parametrization for cross-sections of the quintic 6D Calabi-Yau, so here's the Asympote implementation:



import graph3;


int k1, k2, n = 5;
real alpha = 0.3*pi;

// cross section of the quintic 6D Calabi-Yau manifold
triple cy(pair z) {  

  pair z1, z2;

  if(z==(0,0)) {
    z1 = exp(2*pi*I*k1/n);
    z2 = 0;
  } else {
    z1 = exp(2*pi*I*k1/n)*exp(log(cos(I*z))*2/n);
    z2 = exp(2*pi*I*k2/n)*exp(log(-I*sin(I*z))*2/n);

  return (z2.x, cos(alpha)*z1.y + sin(alpha)*z2.y, z1.x);


for(k1=0; k1<n; ++k1) {
  for(k2=0; k2<n; ++k2) {
    surface s = surface(cy,(-1,0),(1,0.5*pi),20,20);



enter image description here

Don't know which one is shown in your "logo", but that's at least a Calabi-Yau manifold. If you view the resulting PDF with acroread, you can rotate the beast.

  • 1
    This is better than the original! You can also use the opacity option draw(s,red+opacity(0.6)); and modify currentlight to give part of the red/blue appearance.
    – alfC
    Feb 1 '14 at 3:56
  • I was not able to compile this latex code in Overleaf or on my Mac with a full latex installation. I don't see any errors in the log file only warnings such as: No file c3f935e53c8b4367b319754137b94ccc.aux. \openout1 = c3f935e53c8b4367b319754137b94ccc.aux'. ... Package asymptote Warning: file c3f935e53c8b4367b319754137b94ccc-1.eps' not fo und on input line 40. Any idea?
    – itart
    Jan 30 '20 at 12:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.