After going through the pgf manual and also searching the web for some solution or at least a hint on how it can be done (preferably using TikZ), so I came here with my question:

How to draw an Icosahedron?

This is what I have in mind:



3 Answers 3


\psIcosahedron[Frame=false,Viewpoint=-1 0.5 1.2,faceName=\arabic]

enter image description here


The question on polyhedra has an answer by Herbert and it uses pst-solides3d. It can be easily extended for the present case by just replacing octahedron by icosahedron:

%% Code by Herbert --> https://tex.stackexchange.com/a/17208/11232

\psset{lightsrc=10 20 30,viewpoint=30 10 30 rtp2xyz,Decran=40}
          opacity=0.6,hollow,hue=0 1,


enter image description here

You have to compile this with xelatex or latex->dvips->ps2pdf.


You can use \usepackage{tikz,tikz-3dplot}

\documentclass[border=2 mm,12pt,tikz]{standalone}
    \begin{tikzpicture}[tdplot_main_coords,scale=1,line join=round]
    coordinate(A) at (0,\phi,\a)
    coordinate(B) at (0,\phi,-\a)
    coordinate(C) at (0,-\phi,\a)
    coordinate(D) at (0,-\phi,-\a)
    coordinate(E) at (\a,0,\phi)
    coordinate(F) at (\a,0,-\phi)
    coordinate(G) at (-\a,0,\phi)
    coordinate(H) at (-\a,0,-\phi)
    coordinate(I) at (\phi,\a,0)
    coordinate(J) at (\phi,-\a,0)
    coordinate(K) at (-\phi,\a,0)
    coordinate(L) at (-\phi,-\a,0); 
    \draw[dashed, thick]    (B) -- (H) -- (F) 
    (D) -- (L) -- (H) --cycle 
    (K) -- (L) -- (H) --cycle
    (K) -- (L) -- (G) --cycle
    (C) -- (L) (B)--(K) (A)--(K)
        \draw[ultra thick]
        (A) -- (I) -- (B) --cycle 
        (F) -- (I) -- (B) --cycle 
        (F) -- (I) -- (J) --cycle
        (F) -- (D) -- (J) --cycle
        (C) -- (D) -- (J) --cycle
        (C) -- (E) -- (J) --cycle
        (I) -- (E) -- (J) --cycle
        (I) -- (E) -- (A) --cycle
        (G) -- (E) -- (A) --cycle
        (G) -- (E) -- (C) --cycle
 %\foreach \point/\position in {A/right,B/below,C/above,D/left,E/{above right},F/below,G/above,H/left,I/below,J/right,K/below,L/left}
    %\fill (\point) circle (1.5pt);
    %\node[\position=3pt] at (\point) {$\point$};


You can use 3dtools here to draw this.

    \begin{tikzpicture}[scale=2,line cap=round,line join=round]
    \edef\lstV{{0., 0., -0.951057}, {0., 0., 0.951057}, {-0.850651, 0., -0.425325}, {0.850651, 0., 0.425325}, {0.688191, -0.5, -0.425325}, {0.688191, 0.5, -0.425325}, {-0.688191, -0.5, 0.425325}, {-0.688191, 0.5, 0.425325}, {-0.262866, -0.809017, -0.425325}, {-0.262866, 0.809017, -0.425325}, {0.262866, -0.809017, 0.425325}, {0.262866, 0.809017, 0.425325}}
    \tikzset{3d/polyhedron/.cd,fore layer=foreground,back layer=background, 
        fore/.append style={fill opacity=0.7},back/.append style={fill opacity=0.7}}
    \begin{scope}[3d/install view={phi=120,psi=20,%
        \tikzset{name prefix=Va,%<- used for all vertices
            3d/define vertices/.expanded={\lstV},
            3d/polyhedron/create faces from vertex list/.expanded={\lstFaces}}
         \pgfmathtruncatemacro{\mydim}{dim({\lstV})} % number of vertices
        \foreach \X in {1,...,\mydim}
        {\edef\p{\pgfkeysvalueof{/tikz/name prefix}\X}
            \draw[fill=black,on layer=background] (\p) %node[above,scale=0.3]{$\p$} 
            circle[radius=0.6 pt];
            \draw[fill=black,on layer=foreground] (\p) %node[above,scale=0.3]{$\p$} 
            circle[radius=0.6 pt];

enter image description here

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .