答案1
一个起点。通过\foreach
循环可以避免两个三角形的代码重复。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}
\def\AngleS{20}
\def\AngleTheta{45}
\def\RadiusTheta{.8cm}
\def\ArrowLen{2cm}
\definecolor{rosa}{HTML}{F79796}
\definecolor{myred}{HTML}{EE1450}
\definecolor{myblue}{HTML}{0083CA}
\tikzset{
myarrowtip/.tip={Triangle[length=12pt, width=8pt]},
myarrow/.style={draw={#1},line width=2.5pt, -{myarrowtip}},
}
\draw
(\AngleS:9cm) node (s) {$s$}
(0, 0) --
coordinate[pos=.22] (si)
coordinate[pos=.66] (sf)
(s)
;
\foreach \start/\ssub in {si/i, sf/f} {
\draw
(\start) ++(\AngleS:\RadiusTheta)
arc (\AngleS:\AngleS + \AngleTheta:\RadiusTheta)
(\start) ++(\AngleS + \AngleTheta/2:\RadiusTheta + 1.5ex)
node {$\theta$}
;
\draw[myarrow=rosa]
(\start) -- ++(\AngleS:\ArrowLen)
coordinate (tmpA)
node[below] {$\vec F_s$}
;
\draw[myarrow=red]
(\start) -- ++(\AngleS + \AngleTheta:{\ArrowLen/cos(\AngleTheta)})
coordinate (tmpB)
node[left] {$\vec F$}
;
\draw[dashed] (tmpA) -- (tmpB);
\fill[radius=3pt]
(\start) circle[]
++(\AngleS - 90:1em) node {$s_{\ssub}$}
;
}
\draw[myarrow=myblue]
(si) ++(\AngleS - 90:2em)
-- node[below] {$\Delta \vec r$}
++(\AngleS:{(.66 - .22) * 9cm})
;
\end{tikzpicture}
\end{document}