4. feladat

Interaktív ábrák I- Angry Bird

Készítsünk egy olyan interaktív ábrát, amely egy ferde hajítás trajektóriáját rajzolja ki (elmozdulás-magasság)!

  • A hajítást a földről felfelé végezzük, a görbét addig ábrázoljuk csak amíg a test földet nem ér.
  • Legyen két, csúszkákkal változtatható paraméter: a kezdeti szög (fokban megadva) és a kezdősebesség ($\frac{m}{s}$)!
  • Jelöljük a pálya maximális magasságú pontját egy piros ponttal!
  • Az ábrának legyen teneglyfelirata és címe is (külön figyeljünk a mértékegységekre is mindenhol)!

Megoldás

Először betültjük a szükséges csomagokat

In [1]:
%pylab inline
from ipywidgets import *
Populating the interactive namespace from numpy and matplotlib

Ezután létrehozzuk a hajitas függvényt, ami elvégzi a trajektória ábrázolását adott paraméterek szerint:

In [2]:
def hajitas(alfa, v_0):
    T_max = 2 * v_0 * sin(alfa/180*pi) / 9.81        # A földetérés ideje, ennél tovább nem kell ábrázolni
    t = zeros(101)
    for i in range(0, 101):
        t[i] = i * T_max / 100                       # Létrehozzuk az időpillanatokat tartalmazó tömböt
    x = v_0 * t * cos(alfa/180*pi)                   # A test x koordinátái
    y = v_0 * t * sin(alfa/180*pi) - 9.81 / 2 * t**2 # A test y koordinátái
    plot((x**2 + y**2)**0.5, y)                      # A trajektória ábrázolása
    plot((x[50]**2 + y[50]**2)**0.5, y[50], "ro")    # A maximum ábrázolása
    title("A ferdehajítás trajektóriája", size=20, y=1.05)
    ylabel("Magasság (m)", size=12)
    xlabel("Elmozdulás (m)", size=12)
    xticks(linspace(0, 12, 7))                       # Beállítjuk a tengelyek méreteit, hogy a grafikon változása szemléletes legyen
    yticks(linspace(0, 5, 6))
In [3]:
interact(hajitas, alfa=FloatSlider(min=0, max=90, step=1, value=45, description=r"$ \alpha\ (^{\circ})$"), v_0=FloatSlider(min=0, max=10, step=0.1, value=5, description=r"$ v_0\ (\frac{m}{s})$"))
In [ ]: