# How can I draw Frenet frame using Tikz?

Hi, I'm new to Tikz but I've drawn the z and x axes, but the curve I don't know how I can draw it using Tikz, if the whole figure gonna take time, I want just the code that's gonna generates the curve, and I'll continue. Thanks in advance.

It is not difficult to draw this with the method described in section 13.5 of the pgfmanual, just cumbersome.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[>=stealth,pics/tang/.style={code={
\draw[blue,->] (0,0) coordinate (M)-- (2,0) coordinate (v) node[pos=1.1]{$\vec v$};
}}]
\draw[->,teal] (0,0) coordinate (O) -- ++ (0,4) node[below left]{$z$};
\draw[->,teal]  (O) -- ++ (4,0) node[above right,blue]{$x$};
\draw[->,teal]  (O) -- ++ (0,1) node[below left]{$\vec\jmath$};
\draw[->,teal]  (O) -- ++ (1,0) node[below left,blue]{$\vec\imath$};
\draw[red,semithick] (0.2,3.6) to[bend left]
pic[pos=0.4,sloped]{tang} (3.8,1);
\draw[densely dashed] (O) -- (M) node[circle,fill,inner sep=0.6pt,label={above:{$M$}}]{};
\draw[green!60!black,->] (M) -- ($(M)!1cm!(O)$) coordinate[label={left:{$\vec n$}}] (n);
\path ($(n)!1cm!-90:(M)$) coordinate (aux1) (M)++(0,-1) coordinate (aux2)
(intersection of n--aux1 and M--aux2) coordinate (a)
($(M)!(a)!(v)$) coordinate (tau);
\draw[densely dashed] (n) -- (a) -- (tau);
\draw[brown,->] (M)   -- (tau)node[pos=1.2,above]{$\vec \tau$};
\draw[purple,->] (M)   -- (a)node[below]{$\vec a$};
\end{tikzpicture}
\end{document}


• This could be simplified a little by using one macro to draw the "vectors". Mar 14 '21 at 21:23