Mouvement d’un projectile
On souhaite utiliser TikZ pour tracer la trajectoire d’un projectile lancé avec une vitesse initiale et un angle donnés. Nous allons également représenter la vitesse du projectile à différents instants de son vol comme illustré ci-dessous.

1 Préambule
Un projectile est lancé avec une vitesse initiale \(v_{0}\) sous un angle \(\theta\) par rapport à l’horizontale. La trajectoire du projectile est influencée par la gravité, qui agit vers le bas avec une accélération constante \(g\). Les équations du mouvement du projectile sont données par :
\[ x(t) = v_{0} \cos(\theta) t \]
\[ y(t) = -\frac{1}{2} g t^{2} + v_{0} \sin(\theta) t \]
où \(x(t)\) et \(y(t)\) sont les positions horizontale et verticale du projectile à l’instant \(t\).
Les équations de la vitesse du projectile sont données par :
\[ v_{x}(t) = v_{0} \cos(\theta) \]
\[ v_{y}(t) = -g t + v_{0} \sin(\theta) \]
La durée totale de vol \(T\) du projectile peut être calculée en trouvant le temps lorsque le projectile revient au sol (\(y(T) = 0\)) :
\[ T = \frac{2 v_{0} \sin(\theta)}{g} \]
2 Étapes de la construction
Définir les paramètres initiaux : Choisir une vitesse initiale \(v_{0}\), un angle de lancement \(\theta\), et la valeur de l’accélération due à la gravité \(g\).
Calculer la durée totale de vol : Utiliser la formule pour \(T\) afin de déterminer combien de temps le projectile restera en l’air.
Tracer les axes : Dessiner les axes horizontaux et verticaux pour représenter le plan de mouvement du projectile.
Tracer le projectile : Utiliser les équations de position pour tracer le projectile à différents instants de temps entre \(t=0\) et \(t=T\).
Ajouter les vecteurs de vitesse : À plusieurs instants de temps, calculer les composantes de la vitesse \(v_{x}(t)\) et \(v_{y}(t)\), puis dessiner les vecteurs de vitesse à ces points sur la trajectoire.
Ajouter la trajectoire complète : Tracer la trajectoire complète du projectile en utilisant une courbe lisse qui relie tous les points calculés.
3 Code TikZ
Voici un exemple de code TikZ pour réaliser ce tracé :
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\tikzset{
axis/.style={-stealth},
}
\begin{tikzpicture}[scale=4]
\def\InitialAngle{40}
\def\InitialVelocity{6}
\def\Gravity{9.8}
\def\BallRadius{0.1}
\def\VelocityScale{0.1}
\def\AngleScale{1.6}
\def\AxisXMargin{0.3}
\def\AxisXScale{1.2}
\def\AxisYMargin{0.3}
\def\AxisYScale{1.2}
\pgfmathsetmacro{\MaximumTime}{%
2*\InitialVelocity*sin(\InitialAngle)/\Gravity%
}
\pgfmathdeclarefunction{BallX}{1}{%
\pgfmathparse{%
\InitialVelocity*(#1*\MaximumTime)*cos(\InitialAngle)%
}
}
\pgfmathdeclarefunction{BallY}{1}{%
\pgfmathparse{%
-0.5*\Gravity*(#1*\MaximumTime)^2%
+\InitialVelocity*(#1*\MaximumTime)*sin(\InitialAngle)%
}
}
\pgfmathdeclarefunction{BallVx}{1}{%
\pgfmathparse{%
\InitialVelocity*cos(\InitialAngle)%
}
}
\pgfmathdeclarefunction{BallVy}{1}{%
\pgfmathparse{%
-\Gravity*(#1*\MaximumTime)%
+\InitialVelocity*sin(\InitialAngle)%
}
}
\newcommand\BallXFormula{%
x = v_{0}t\cos\theta
}
\newcommand\BallYFormula{%
y = -\frac{1}{2}gt^{2} + v_{0}t\sin\theta
}
\pgfmathsetmacro{\MaximumX}{BallX(1.0)}
\pgfmathsetmacro{\MaximumY}{BallY(0.5)}
\newcommand{\DrawBall}[2][black]{
\coordinate (P) at ({BallX(#2)},{BallY(#2)});
\coordinate (V) at ({BallVx(#2)},{BallVy(#2)});
\filldraw[ball color=#1!50!]
(P) circle (\BallRadius);
\draw[-stealth, thick, #1]
(P) --++($\VelocityScale*(V)$)
node[above, sloped] {$\vec{v}$};
}
\draw[axis]
(-\AxisXMargin,0) -- ($\AxisXScale*(\MaximumX,0)$)
node[right] {$x$};
\draw[axis]
(0,-\AxisYMargin) -- ($\AxisYScale*(0,\MaximumY)$)
node[above] {$y$};
\filldraw[opacity=0.2, fill=blue!50]
(\BallRadius*\AngleScale,0) arc (0:\InitialAngle:\BallRadius*\AngleScale)
node[opacity=1, midway, above right] {$\theta$}
-- (0,0) -- cycle;
\foreach \t in {0,0.8,1} {
\DrawBall{\t}
}
\pgfmathsetmacro{\TimeToLabel}{0.225}
\DrawBall[blue]{\TimeToLabel}
\coordinate (Pt) at ({BallX(\TimeToLabel)},{BallY(\TimeToLabel)});
\draw[densely dotted]
(Pt) -- (Pt |- 0, 0)
node[below] {$\BallXFormula$}
(Pt) -- (Pt -| 0, 0)
node[left] {$\displaystyle \BallYFormula$}
;
\DrawBall[red]{0.5}
\draw[
samples=256,
densely dotted,
domain=0:1,
variable=\t
] plot ({BallX(\t)}, {BallY(\t)});
\end{tikzpicture}
\end{document}