\documentclass{standalone} \usepackage{pgfplots} % TikZ (TeX ist kein Zeichenprogramm) \usetikzlibrary{calc} % for vector arithmetics \usepackage{amssymb, bm} \renewcommand{\t}[1]{{#1}^{T}} \newcommand{\mat}[1]{\boldsymbol{#1}} \newcommand{\manifold}[1]{\mathfrak{#1}} % PGF-Plot / TikZ config \usetikzlibrary{% calc, through, intersections, patterns, patterns.meta, pgfplots.colormaps } \pgfplotsset{ compat = newest, colormap = {grayscale}{color=(lightgray) color=(white) color=(lightgray)}, colormap = {blackscale}{color=(black!70) color=(black!50) color=(black!70)}, colormap = {redscale}{color=(black!70!red) color=(black!50!red) color=(black!70!red)}, colormap = {bluescale}{color=(black!70!blue) color=(black!50!blue) color=(black!70!blue)}, } \begin{document} \begin{tikzpicture}[ >=latex, scale = 1, declare function = { % Note: NO spaces in function argument list! X(\u,\v) = (2 + cos(\u)) * cos(\v); Y(\u,\v) = (2 + cos(\u)) * sin(\v); Z(\u,\v) = sin(\u); tx(\u,\v,\x,\y) = - sin(\u) * cos(\u) * \x - (2 + cos(\u)) * sin(\v) * \y; ty(\u,\v,\x,\y) = - sin(\u) * cos(\u) * \x + (2 + cos(\u)) * cos(\v) * \y; tz(\u,\v,\x,\y) = + cos(\u) * \x; } ] \begin{axis}[ axis equal image, hide axis, view = {120}{30}, scale = 2 ] \addplot3[ surf, shader = faceted interp, samples = 20, samples y = 40, domain = 0:360, domain y = 0:360, z buffer = sort, colormap name = grayscale, thin ] ({X(\x, \y)}, {Y(\x, \y)}, {Z(\x, \y)}); % at = (1.433013, 2.482051, 0.5) // \u, \v = (30, 60) % into = (-0.4330127, -0.4330127, 0.8660254) % and = (-2.482051, 1.433013, 0) % X <- c(1.433013, 2.482051, 0.5) % dx <- c(-0.4330127, -0.4330127, 0.8660254) % dy <- c(-2.482051, 1.433013, 0) \addplot3[ mesh, shader = interp, patch type = line, variable = t, domain = -44:210.5, samples = 64, samples y = 1, colormap name = redscale ] ({X(\t, \t + 30)}, {Y(\t, \t + 30)}, {Z(\t, \t + 30)}); \addplot3[ mesh, shader = interp, patch type = line, variable = t, domain = -50:119, samples = 64, samples y = 1, colormap name = bluescale ] ({X(\t, -0.3 * \t + 69)}, {Y(\t, -0.3 * \t + 69)}, {Z(\t, -0.3 * \t + 69)}); \coordinate (x) at ({X(30, 60)}, {Y(30, 60)}, {Z(30, 60)}); \draw[dashed, fill = gray, opacity = 0.4] ( {X(30, 60) + tx(30, 60, 0.4 + 0.8, 0.4 - 0.24)}, {Y(30, 60) + ty(30, 60, 0.4 + 0.8, 0.4 - 0.24)}, {Z(30, 60) + tz(30, 60, 0.4 + 0.8, 0.4 - 0.24)} ) -- ( {X(30, 60) + tx(30, 60, -0.4 + 0.8, -0.4 - 0.24)}, {Y(30, 60) + ty(30, 60, -0.4 + 0.8, -0.4 - 0.24)}, {Z(30, 60) + tz(30, 60, -0.4 + 0.8, -0.4 - 0.24)} ) node[anchor = west, opacity = 1, outer sep=0.5em] {$T_{\mat{x}}\manifold{A}$} -- ( {X(30, 60) + tx(30, 60, -0.4 - 0.8, -0.4 + 0.24)}, {Y(30, 60) + ty(30, 60, -0.4 - 0.8, -0.4 + 0.24)}, {Z(30, 60) + tz(30, 60, -0.4 - 0.8, -0.4 + 0.24)} ) -- ( {X(30, 60) + tx(30, 60, 0.4 - 0.8, 0.4 + 0.24)}, {Y(30, 60) + ty(30, 60, 0.4 - 0.8, 0.4 + 0.24)}, {Z(30, 60) + tz(30, 60, 0.4 - 0.8, 0.4 + 0.24)} ) -- cycle; \draw[->, black!50!red] (x) -- ( {X(30, 60) + tx(30, 60, 0.4, 0.4)}, {Y(30, 60) + ty(30, 60, 0.4, 0.4)}, {Z(30, 60) + tz(30, 60, 0.4, 0.4)} ) node[pos = 0.7, anchor = north west, inner sep = 0pt] {$\t{\nabla\gamma_1(0)}$}; \draw[->, black!50!blue] (x) -- ( {X(30, 60) + tx(30, 60, 0.8, -0.24)}, % -0.24 = 0.8 * -0.3 {Y(30, 60) + ty(30, 60, 0.8, -0.24)}, {Z(30, 60) + tz(30, 60, 0.8, -0.24)} ) node[pos = 0.7, anchor = south west, inner sep = 0pt] {$\t{\nabla\gamma_2(0)}$}; \node[anchor = north] at (x) {$\mat{x}$}; \node[circle, inner sep={1pt}, outer sep={0pt}, fill=black] at (x) {}; \end{axis} \end{tikzpicture} \end{document}