By request, I'm turning my comment into an answer.
I very much like the tikz-3dplot package, which appends to tikz' 3D capabilities.
You should really go trough the manual to see what it's capable of, but here are some examples:
\documentclass{minimal}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\newcommand{\ve}[1]{\ensuremath{\mathbf{#1}}}
\newcommand{\ud}[0]{\mathrm{d}}
\tikzset{
vector/.style = {
thick,
> = stealth',
},
axis/.style = {
very thin,
> = stealth',
},
}
\begin{document}
\tdplotsetmaincoords{60}{110}
\begin{tikzpicture}[tdplot_main_coords,scale=0.8]
% draw axes
\draw[axis,->] (0,0,0) coordinate (O) -- (5,0,0) node[anchor=north east]{$x$};
\draw[axis,->] (0,0,0) -- (0,4.95,0) node[right,anchor=west]{$y$};
\draw[axis,->] (0,0,0) -- (0,0,4.95) node[anchor=south]{$z$};
% draw
\draw[vector,->] (O) -- node[above left]{\ve{v}} (2,4,3) coordinate (V);
\draw[vector,->] (O) -- node[below right]{$\ve{v}_x$}(2,0,0)node[left]{$2$};
\draw[vector,->] (O) -- node[below]{$\ve{v}_y$}(0,4,0)node[below right]{$4$};
\draw[vector,->] (O) -- node[left]{$\ve{v}_z$}(0,0,3)node[above left]{$3$};
\draw[densely dotted] (0,4,0) -- (2,4,0) -- (2,0,0);
\draw[densely dotted] (V) -- (0,4,3) -- (0,0,3) -- (2,0,3) -- (2,0,0);
\draw[densely dotted] (2,0,3) -- (V) -- (2,4,0);
\draw[densely dotted] (0,4,0) -- (0,4,3);
\foreach \s in{1,2,3,4}{
\draw[fill](\s,0,0)circle(0.5pt);
\draw[fill](0,\s,0)circle(0.5pt);
\draw[fill](0,0,\s)circle(0.5pt);
}
\end{tikzpicture}
\bigskip
\tdplotsetmaincoords{70}{120}
\tdplotsetrotatedcoords{90}{90}{90}
\begin{tikzpicture}[tdplot_main_coords,scale=0.5]
\draw (0,0,0) -- ++(0,-2.3,0) node[above left]{$-$};
% draw a condensor plate
\draw[fill=lightgray] (-1.5,0,-1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--(1.5,0,-1.5)--cycle;
\draw[fill=lightgray] (1.5,0,-1.5)--(1.5,-0.2,-1.5)--(1.5,-0.2,1.5)--(1.5,0,1.5)--cycle;
\draw[fill=lightgray] (1.5,-0.2,1.5)--(-1.5,-0.2,1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--cycle;
\def\q{-2.3}
% draw surface
\draw (0,-0.5*\q,0) coordinate(R);
\tdplotdrawarc[tdplot_rotated_coords,fill opacity=0.5,fill=lightgray!30,draw=black]{(R)}{3}{0}{360}{}{}
\draw[tdplot_rotated_coords](R)++(-110:3) node[below left]{$S_2$};
\draw[tdplot_rotated_coords](R)++(70:3) node[above right]{$C$};
% draw second condensor plate
\draw[fill=lightgray] (-1.5,0-\q,-1.5)--(-1.5,0-\q,1.5)--(1.5,0-\q,1.5)--(1.5,0-\q,-1.5)--cycle;
\draw[fill=lightgray] (1.5,0-\q,-1.5)--(1.5,-0.2-\q,-1.5)--(1.5,-0.2-\q,1.5)--(1.5,0-\q,1.5)--cycle;
\draw[fill=lightgray] (1.5,-0.2-\q,1.5)--(-1.5,-0.2-\q,1.5)--(-1.5,0-\q,1.5)--(1.5,0-\q,1.5)--cycle;
\draw (0,-\q,0)--++(0,2,0)node[above right]{$+$};
\end{tikzpicture}%
\begin{tikzpicture}[tdplot_main_coords,scale=0.5]
\tdplotsetrotatedcoords{90}{90}{90}%
\draw (0,0,0)--++(0,-2.3,0)node[above left]{$-$};
% draw condensore plate
\draw[fill=lightgray] (-1.5,0,-1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--(1.5,0,-1.5)--cycle;
\draw[fill=lightgray] (1.5,0,-1.5)--(1.5,-0.2,-1.5)--(1.5,-0.2,1.5)--(1.5,0,1.5)--cycle;
\draw[fill=lightgray] (1.5,-0.2,1.5)--(-1.5,-0.2,1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--cycle;
% draw surface
\def\q{-2.3}
\def\R{3}
\draw (0,-0.5*\q,0) coordinate(R);
\tdplotdrawarc[tdplot_rotated_coords,fill=lightgray,fill opacity=0.5,draw=black]{(R)}{\R}{0}{360}{}{}
\draw[tdplot_rotated_coords](R)++(-110:\R) node[below left]{$S_1$};
\draw[tdplot_rotated_coords](R)++(70:\R) node[above right]{$C$};
\tdplotsetrotatedcoords{0}{70}{90}
\draw[tdplot_rotated_coords](R)++(90:\R) coordinate (A) circle(0.5pt);
\draw[tdplot_rotated_coords,fill opacity=0.5,fill=lightgray!30](A)arc(90:270:\R);
\tdplotsetrotatedcoords{90}{90}{90}
\tdplotdrawarc[tdplot_rotated_coords,fill=lightgray!10,draw=black]{(R)}{\R}{0}{360}{}{}
\begin{scope}
% draw condensor plate again, inside (clip outside)
\clip[tdplot_rotated_coords] (R)++(0:\R) arc (0:360:\R);
\draw[fill=lightgray] (-1.5,0,-1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--(1.5,0,-1.5)--cycle;
\draw[fill=lightgray] (1.5,0,-1.5)--(1.5,-0.2,-1.5)--(1.5,-0.2,1.5)--(1.5,0,1.5)--cycle;
\draw[fill=lightgray] (1.5,-0.2,1.5)--(-1.5,-0.2,1.5)--(-1.5,0,1.5)--(1.5,0,1.5)--cycle;
\end{scope}
\draw[tdplot_rotated_coords] (R)++(0:\R) arc (0:360:\R);
% draw second condensor plate
\draw[fill=lightgray] (-1.5,0-\q,-1.5)--(-1.5,0-\q,1.5)--(1.5,0-\q,1.5)--(1.5,0-\q,-1.5)--cycle;
\draw[fill=lightgray] (1.5,0-\q,-1.5)--(1.5,-0.2-\q,-1.5)--(1.5,-0.2-\q,1.5)--(1.5,0-\q,1.5)--cycle;
\draw[fill=lightgray] (1.5,-0.2-\q,1.5)--(-1.5,-0.2-\q,1.5)--(-1.5,0-\q,1.5)--(1.5,0-\q,1.5)--cycle;
\draw (0,-\q,0)--++(0,2,0)node[above right]{$+$};
\end{tikzpicture}
\bigskip
\tdplotsetmaincoords{90}{120}
\tdplotsetrotatedcoords{90}{90}{0}
\begin{tikzpicture}[tdplot_main_coords,scale=1.6]
% praw circular plate
\tdplotdrawarc[tdplot_rotated_coords,fill=lightgray,draw=lightgray,line width=0pt]{(0,-0.5,0)}{1}{0}{360}{}{}
\tdplotdrawarc[tdplot_rotated_coords,fill=lightgray]{(0,-0.5,0)}{1}{180}{360}{}{}
\tdplotdrawarc[tdplot_rotated_coords,fill=lightgray]{(0,0,0)}{1}{0}{360}{}{}
\draw[yshift=1cm](0,0)--(0.5,0);
\draw[yshift=-1cm](0,0)--(0.5,0);
\draw[help lines] (0,0,0)--(-9,0,0)node[right]{$s$};
\draw[help lines] (-6,0,0)--(-6,0,1.5);
\draw[fill](-6,0,0) circle (0.5pt) node[above,fill=white]{$P(a)$}node[below]{$q$};
\draw[fill](-6,0,0) circle (0.5pt);
% draw inner circle
\tdplotdrawarc[tdplot_rotated_coords,help lines]{(0,0,0)}{0.6}{0}{360}{}{}
\draw[tdplot_rotated_coords,<->](0,0,0)--node[below]{$r$}(0.05,-0.6);
\draw[tdplot_rotated_coords,<->](0,0,0)--node[right]{$R$}(0.7,0.7);
% dtheta angle
\draw[tdplot_rotated_coords](-0.42,-0.42,0)--(-0.57,-0.57,0);
\draw[tdplot_rotated_coords](-0.6,0,0)--(-0.8,0,0);
\tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{0.8}{180}{225}{}{}
\tdplotdrawarc[tdplot_rotated_coords]{(0,0,0)}{0.6}{180}{225}{}{}
\draw[tdplot_rotated_coords,help lines](0,0,0)--(-1.1,-1.1,0);
\draw[tdplot_rotated_coords,help lines](0,0,0)--(-1.5,0,0);
\tdplotdrawarc[tdplot_rotated_coords,<->]{(0,0,0)}{1.4}{180}{225}{above left}{$\ud\theta$}
% annotate stuff
\draw[tdplot_rotated_coords] (-0.65,-0.25,0) coordinate (X);
\draw[vector,->] (X)--node[above]{$x$}(-6,0,0);
\draw[<->] (0,0,1.2)--node[above]{$a$}(-6,0,1.2);
\draw (-0.2,0,-1) node[right]{$S$};
\draw[vector,->] (-6,0,0)--(-7,0,0)node[below]{$\ve{K}$};
\draw[vector,->] (-6,0,0)--(-8,0,0)node[below]{$\ve{E}$};
\tdplotsetrotatedcoords{0}{90}{90}
\draw(-6,0,0) coordinate (Q);
\tdplotdrawarc[tdplot_rotated_coords]{(Q)}{1.2}{170}{180}{left}{$\phi$}
\end{tikzpicture}
\end{document}
(note that the above code is just copy pasted code, sometimes from pretty old documents, so it may be that there is some inefficient code in there, from when I wasn't that good at TikZ yet).
Compiling the above document gives you these figures:

You can do pretty much everything it TikZ although sometimes it gets pretty hairy to get there. I remember I once drew the Stern Gerlach experiment in 3D (strangely shaped magnets, and their field lines) but I lost the code to that. TeXample also has a 3D category, which holds numerous examples of 3D images that can be done in TikZ.