This commit is contained in:
Loic Guegan 2021-10-05 15:50:11 +02:00
parent 442a9e9c85
commit c7c4048a44
3 changed files with 29 additions and 8 deletions

View file

@ -34,17 +34,19 @@
<br /><br /><br /> <br /><br /><br />
<h3>Projectile Motion</h3> <h3>Projectile Motion</h3>
<p>To determine to position of the projectile we should compute the position vector \(\vec{r}(t)=x(t)\vec{i}+y(t)\vec{i}\).</p> <p>To determine to position of the projectile we should compute the position vector \(\vec{r}(t)=x(t)\vec{i}+y(t)\vec{j}\).</p>
<h5>\(x(t)\):</h5> <h5>\(x(t)\):</h5>
<p>We know from Newton second law that \(\sum \vec{F} = m\times \vec{a}_x = m\times a_x(t)\vec{i}\)</p> <p>We know from Newton second law that \(\sum \vec{F} = m\times \vec{a}_x = m\times a_x(t)\vec{i}\)</p>
<p>However, the projectile as a constant speed along \(\vec{i}\). Hence, \(a_x(t) = 0 \).</p> <p>However, the projectile as a constant speed along \(\vec{i}\). Hence, \(a_x(t) = 0 \).</p>
<p>Thus:</p> <p>Thus:</p>
\[ v_x(t) = v_{x,0} \]
\[ x(t) = \int_{t_0}^t v_{0,x}dt = v_{0,x}t + C = v_{0,x}t + x_0\] \[ x(t) = \int_{t_0}^t v_{0,x}dt = v_{0,x}t + C = v_{0,x}t + x_0\]
<h5>\(y(t)\):</h5> <h5>\(y(t)\):</h5>
<p>We know from Newton second law that \(\sum \vec{F} = m\times \vec{a}_y = m\times a_y(t)\vec{i}\)</p> <p>We know from Newton second law that \(\sum \vec{F} = m\times \vec{a}_y = m\times a_y(t)\vec{j}\)</p>
<p>The projectile is under the influence of the gravity that is oriented <em>downward</em>. Hence, \(a_y(t) = -g \).</p> <p>The projectile is under the influence of the gravity that is oriented <em>downward</em>. Hence, \(a_y(t) = -g \).</p>
<p>Thus:</p> <p>Thus:</p>
\[ v_y(t) = \int_{t_0}^t a_{y}(t)dt = -gt+C = -gt + v_{0,y}\] \[ v_y(t) = \int_{t_0}^t a_{y}(t)dt = -gt+C = -gt + v_{0,y}\]
\[ y(t) = \int_{t_0}^t v_y(t)dt = -\frac{1}{2}gt^2 + v_{0,y}t+C=-\frac{1}{2}gt^2 + v_{0,y}t+y_0\] \[ y(t) = \int_{t_0}^t v_y(t)dt = -\frac{1}{2}gt^2 + v_{0,y}t+C=-\frac{1}{2}gt^2 + v_{0,y}t+y_0\]
<h5>\(\vec{r}(t)\):</h5> <h5>\(\vec{r}(t)\):</h5>
Finally knowing \(x(t)\) and \(y(t)\) we have \( \vec{r}(t) = \left(\begin{smallmatrix}x(t)\\y(t)\end{smallmatrix}\right) = \left(\begin{smallmatrix}v_{0,x}t + x_0\\-\frac{1}{2}gt^2 + v_{0,y}t+y_0\end{smallmatrix}\right)\) <p>Finally knowing \(x(t)\) and \(y(t)\) we have \( \vec{r}(t) = \left(\begin{smallmatrix}x(t)\\y(t)\end{smallmatrix}\right) = \left(\begin{smallmatrix}v_{0,x}t + x_0\\-\frac{1}{2}gt^2 + v_{0,y}t+y_0\end{smallmatrix}\right)\)</p>
<p>We can deduce also that \( \vec{v}(t) = \left(\begin{smallmatrix}v_x(t)\\v_y(t)\end{smallmatrix}\right) = \left(\begin{smallmatrix}v_{0,x}\\-gt+v_{0,y}\end{smallmatrix}\right)\)</p>

View file

@ -23,6 +23,13 @@ let projectile= function (p){
vt=p.createElement('span', ''); vt=p.createElement('span', '');
katex.render("v(t)", vt.elt); katex.render("v(t)", vt.elt);
vi=p.createElement('span', '');
katex.render("\\vec{i}", vi.elt);
vj=p.createElement('span', '');
katex.render("\\vec{j}", vj.elt);
}; };
// See explanations // See explanations
@ -35,7 +42,7 @@ let projectile= function (p){
} }
function v(t) { function v(t) {
return (-g * t + v0) return -g * t + v0
} }
let draw_vectors=function(x,y,skiparrow=false){ let draw_vectors=function(x,y,skiparrow=false){
@ -44,8 +51,14 @@ let projectile= function (p){
draw_arrow(p,x,y,x+x0,y-v(t),vt,c,skiparrow) draw_arrow(p,x,y,x+x0,y-v(t),vt,c,skiparrow)
p.stroke(200) p.stroke(200)
draw_arrow(p,x0,height-y0,x,y,r,c,skiparrow) draw_arrow(p,x0,height-y0,x,y,r,c,skiparrow)
p.stroke(122, 199, 107) p.stroke(181, 107, 199)
draw_arrow(p,x0,height-y0,x0+v0,height-(y0+v0),v0t,c,skiparrow) draw_arrow(p,x0,height-y0,x0+v0,height-(y0+v0),v0t,c,skiparrow)
p.stroke(121, 199, 107)
draw_arrow(p,50,50,50,0,vj,c,skiparrow,true)
p.stroke(199,119,107)
draw_arrow(p,50,50,100,50,vi,c,skiparrow)
p.pop() p.pop()
} }
@ -72,6 +85,7 @@ let projectile= function (p){
end=true end=true
} }
// Update state
if(!end){ if(!end){
t+=0.1 t+=0.1
dots.push([x,y]) dots.push([x,y])
@ -89,7 +103,6 @@ refresh=function(){
y0=parseFloat(app.y0) y0=parseFloat(app.y0)
v0=parseFloat(app.v0) v0=parseFloat(app.v0)
g=parseFloat(app.g) g=parseFloat(app.g)
console.log(app.x0)
p5Load() p5Load()
} }

View file

@ -1,5 +1,5 @@
draw_arrow=function(p,x1,y1,x2,y2,elt=null,canvas,skiparrow=false){ draw_arrow=function(p,x1,y1,x2,y2,elt=null,canvas,skiparrow=false,flip=false){
var offset=5 var offset=5
// Reduce the length of the vector to have a better tip location // Reduce the length of the vector to have a better tip location
@ -30,6 +30,12 @@ draw_arrow=function(p,x1,y1,x2,y2,elt=null,canvas,skiparrow=false){
xfactor=1-yfactor xfactor=1-yfactor
justify=15 justify=15
if(flip){
xfactor=-xfactor
yfactor=-yfactor
}
if(angle>0){ if(angle>0){
yfactor=-yfactor yfactor=-yfactor
} }