Please download the notebook attached at the end of this discussion
I found this twitter animation quite fascinating. Simple high school physics connects the conic section curves through a subtle way. Lets program this through Wolfram Language.
Assume initial throwing speed is $v_0 = 5$ meter per second:
v0 = 5;
and the gravity on earth is
g = QuantityMagnitude[Entity["Planet", "Earth"][EntityProperty["Planet", "Gravity"]], "Meters"/"Seconds"^2]
(* g = 9.80 meter per second sqaured*)
The kinetics and trajectory of a projectile are expressed in parametric form:
traj[\[Theta]0_, t_] := {v0*Cos[\[Theta]0]*t, v0*Sin[\[Theta]0]*t - (g*t^2)/2}
Given an angle that defines the throwing angle and ground, we can use the traj
function to draw the corresponding trajectory:
trajPlot[angle_]:=With[{\[Theta]0=angle},ParametricPlot[traj[\[Theta]0,t],{t,0.02,v0*Sin[\[Theta]0]*2/g}]]
So in my animation that I am going to show later, all trajectory plot can be accumulated with FoldList
and single frames which are generated in the above manner:
frames = Rest@FoldList[Show[#1, #2] &, Table[trajPlot[\[Theta]], {\[Theta], range}]];
Let's pick some throwing angles from $0$ to $\pi$: range = Range[0.1, \[Pi] - 0.1, 0.1];
. Then all maximum heights can be computed directly because we know the ascending time stops when the vertical speed reduce to zero linearly due to gravity:
peaks = traj[#1, (v0 Sin[#1])/g] & /@ range;
Thus we can create a frame with all peak points through which define a ellipse passes.
peaksPlot=ParametricPlot[traj[\[Theta]0,(v0*Sin[\[Theta]0])/g],{\[Theta]0,0,\[Pi]},Epilog->Join[{Red,PointSize[Medium]},Point/@peaks]];
Now lets put peaksPlot
and frames
altogether in the ListAnimate
function. The proof is also attached on the bottom of the animation. You can simply rearrange the terms in the Out[11]
and use $\sin^2(2\theta) + \cos^2(2\theta) = 1$ to find the standard form of ellipse. This is left to our readers as homework.
Attachments: