File size: 2,632 Bytes
b359774
97f1ec3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b359774
b6e3b93
97f1ec3
 
b6e3b93
97f1ec3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b6e3b93
 
 
 
 
97f1ec3
b6e3b93
 
 
 
 
97f1ec3
b6e3b93
97f1ec3
b6e3b93
97f1ec3
b6e3b93
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import gradio as gr
import numpy as np
import pandas as pd

def plot(v, a):
    g = 9.81
    theta = a / 180 * 3.14
    tmax = ((2 * v) * np.sin(theta)) / g
    timemat = tmax * np.linspace(0, 1, 40)[:, None]

    x = (v * timemat) * np.cos(theta)
    y = ((v * timemat) * np.sin(theta)) - ((0.5 * g) * (timemat**2))

    trajectory = pd.DataFrame({'x': x.flatten(), 'y': y.flatten()})
    return trajectory


with gr.Blocks() as demo:
    gr.Markdown(r"""
    # Range of a Projectile
    
    The range of a projectile is the horizontal distance it travels during its motion. You can see how the range changes as you adjust the initial speed and angle of the projectile:
    
    """)

    with gr.Row():
        speed = gr.Slider(1, 30, 25, label="Speed")
        angle = gr.Slider(0, 90, 45, label="Angle")
    
    output = gr.ScatterPlot(None, 'x', 'y')
    speed.change(plot, [speed, angle], output)
    angle.change(plot, [speed, angle], output)
    demo.load(plot, [speed, angle], output)    
    
    gr.Markdown(r"""
    
    The horizontal displacement of a projectile at any time can be calculated using the following kinematic equation:    
    
    $x = x_0 + v_0 \cos \theta \cdot t$
    
    where $x$ is the horizontal displacement, $x_0$ is the initial horizontal position, $v_0$ is the initial velocity, $\theta$ is the angle at which the projectile is launched, and $t$ is the time.
    
    To find the range of the projectile, we need to find the time at which it hits the ground (i.e., when its vertical displacement becomes zero). The vertical displacement of a projectile at any time can be calculated using the following kinematic equation:
    
    $y = y_0 + v_0 \sin \theta \cdot t - \frac{1}{2}gt^2$
    
    where $y$ is the vertical displacement, $y_0$ is the initial vertical position, $v_0$ is the initial velocity, $\theta$ is the angle at which the projectile is launched, $t$ is the time, $g$ is the acceleration due to gravity, and $t$ is the time.
    
    To find the time at which the projectile hits the ground, we can set the vertical displacement to zero and solve for $t$. This gives us the following equation:
    
    $0 = y_0 + v_0 \sin \theta \cdot t - \frac{1}{2}gt^2$
    
    Solving for $t$, we get two possible solutions, but since the projectile will hit the ground at a later time, we need to take the positive value of $t$. Substituting this value into the equation for horizontal displacement and using a trigonometric identity, we get the following equation for the range of the projectile:
    
    $R = v_0^2 \cdot \frac{\sin(2\theta)}{g}$    
    """)
    
demo.launch()