# How to draw a simple cone with height and radius with TikZ?

I need to make a very simple cone with h and r (like the picture I've uploaded as example) and I can't find it in previous questions.

-
Related Question: TikZ: inverted cone. –  Peter Grill Jun 22 at 22:31

With arc

 \documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[dashed] (0,0) arc (170:10:2cm and 0.4cm)coordinate[pos=0] (a);
\draw (0,0) arc (-170:-10:2cm and 0.4cm)coordinate (b);
\draw[densely dashed] ([yshift=4cm]$(a)!0.5!(b)$) -- node[right,font=\footnotesize] {$h$}coordinate[pos=0.95] (aa)($(a)!0.5!(b)$)
-- node[above,font=\footnotesize] {$r$}coordinate[pos=0.1] (bb) (b);
\draw (aa) -| (bb);
\draw (a) -- ([yshift=4cm]$(a)!0.5!(b)$) -- (b);
\end{tikzpicture}
\end{document}


With ellipse

\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\clip (-2,0) rectangle (2,1cm);
\draw[dashed] (0,0) circle(2cm and 0.35cm);
\end{scope}
\begin{scope}
\clip (-2,0) rectangle (2,-1cm);
\draw (0,0) circle(2cm and 0.35cm);
\end{scope}
\draw[densely dashed] (0,4) -- node[right,font=\footnotesize] {$h$}coordinate[pos=0.95] (aa)(0,0)
-- node[above,font=\footnotesize] {$r$}coordinate[pos=0.1] (bb) (2,0);
\draw (aa) -| (bb);
\draw (-2,0) -- (0,4) -- (2,0);
\end{tikzpicture}
\end{document}


Gonzalo has kindly provided the shadings to the cylinder and I am reproducing his code (with thanks):

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\fill[
top color=gray!50,
bottom color=gray!10,
opacity=0.25
]
(0,0) circle (2cm and 0.5cm);
\fill[
left color=gray!50!black,
right color=gray!50!black,
middle color=gray!50,
opacity=0.25
]
(2,0) -- (0,6) -- (-2,0) arc (180:360:2cm and 0.5cm);
\draw
(-2,0) arc (180:360:2cm and 0.5cm) -- (0,6) -- cycle;
\draw[dashed]
(-2,0) arc (180:0:2cm and 0.5cm);
\draw[dashed]
(2,0) -- node[below] {$r$} (0,0) -- node[left] {h} (0,6) ;
\draw
(0,8pt) -- ++(8pt,0) -- (8pt,0);
\end{tikzpicture}

\end{document}


-
Since you answered providing two options, perhaps you could add a new option with shadings as in my answer? I see no point in giving almost the same code in two different answers. –  Gonzalo Medina Apr 13 at 1:47
@GonzaloMedina Thanks and I used your code as such as I felt that it is good. thank you. –  Harish Kumar Apr 13 at 15:12

Just for fun with PSTricks.

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[dimen=m](8,10)
\psellipticarc[linestyle=dashed](4,1)(4,.65){0}{180}
\psellipticarcn(4,1)(4,.65){0}{180}
\psline[linecap=0](0,1)(4,10)(8,1)
\pcline[linestyle=dashed](4,10)(4,1)\naput{$h$}
\pcline[linestyle=dashed](4,1)(8,1)\naput{$r$}
\rput(4,1){\psline(0,9pt)(9pt,9pt)(9pt,0)}
\end{pspicture}
\end{document}


-