\documentclass[border=10pt]{standalone}\usepackage[inline]{asymptote}\begin{document}\begin{asy}settings.render = 0;settings.prc = false;import graph3;real unit = 0.1cm;unitsize(unit);defaultpen(fontsize(10pt));triple eyeDirection = dir((-2,-2,0.7));currentprojection = orthographic(eyeDirection);triple translateDirection = dir(cross(Z, eyeDirection));void drawBehind(path3 thepath, pen pen=currentpen, real backOpacity = 1.0, real backWidth=2.0){real newsize = backWidth;real distBehind = (newsize/2 + linewidth(pen)/2 + 10) * (1bp/unit);draw(shift(-distBehind*dir(eyeDirection))*thepath, white+linewidth(newsize)+opacity(backOpacity));}real r(real t) { return t; }real z(real t) { return t; }real theta(real t) { return t; }triple F(real t) {real r = r(t);real z = z(t);real theta = theta(t);return (r*cos(theta), r*sin(theta), z);}path3 p = graph(F, 0, 7*2pi, operator ..);drawBehind(p);draw(p);drawBehind((0,0,0) -- (0,0,70));draw((0,0,0) -- (0,0,70), arrow=Arrow3());label("$Z$", position=(0,0,70), align=W);
Source: TeX.SE
Author: Charles Staats (License)