Narzędzia użytkownika

Narzędzia witryny


narzedzia:apple_sim_py

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
narzedzia:apple_sim_py [2025/05/07 12:01] administratornarzedzia:apple_sim_py [2025/05/16 18:48] (aktualna) administrator
Linia 1: Linia 1:
 Skrypt do pobrania: Skrypt do pobrania:
 +{{ :narzedzia:apple_sim.py |}}
  
 +{{ :narzedzia:apple_sim_rr36t2xzdr.gif|}}
  
 +====== PY: Symulacja Masy Sprężystej ======
  
-====== Symulacja Masy Sprężystej – Analiza Skryptu Zastosowania Fizyki ======+Ten artykuł wyjaśnia, jak działa skrypt symulujący ruch masy sprężystej pod wpływem grawitacji, wiatru oraz siły tarcia, z użyciem bibliotek ''%%Tkinter%%'', ''%%Matplotlib%%'' ''%%NumPy%%''.
  
-Ten artykuł wyjaśnia szczegółowo działanie interaktywnej symulacji masy poruszającej się pod wpływem grawitacji, siły wiatru, odbić i tarcia. Skrypt wykorzystuje bibliotekę **Matplotlib** oraz interfejs **Tkinter** do stworzenia graficznej symulacji i wizualizacji danych fizycznych w czasie rzeczywistym. 
  
-===== 1. Ustawienia początkowe i stałe fizyczne =====+----
  
-```python+===== ⚙️ Stałe fizyczne i warunki początkowe ===== 
 + 
 +<code python>
 g = 9.81              # Przyspieszenie ziemskie (m/s^2) g = 9.81              # Przyspieszenie ziemskie (m/s^2)
-m = 0.15              # Masa kulki (kg) +m = 0.15              # Masa piłki (kg) 
-restitution = 0.7     # Współczynnik sprężystości +restitution = 0.7     # Współczynnik sprężystości (odbicia)
-time_step = 0.05      # Krok czasowy (s)+
 friction_coefficient = 0.5  # Współczynnik tarcia friction_coefficient = 0.5  # Współczynnik tarcia
-```+</code>
  
-Podstawowe stałe fizyczne zostały zdefiniowane na początku. Przyspieszenie ziemskie \( g = 9.81 \, \text{m/s}^2 \), a masa kulki \( m = 0.15 \, \text{kg} \).+Używamy podstawowych stałych z fizyki:
  
-**Współczynnik sprężystości** odpowiada za sposób odbicia od podłoża:+  Siła grawitacji: ( F_g = m g ) 
 +  Odbicie piłki od ziemi następuje z redukcją prędkości pionowej przez współczynnik sprężystości: $$ v_{y, \text{po}} = -v_{y, \text{przed}} \cdot e $$
  
-$$ 
-v_{\text{po odbiciu}} = -v_{\text{przed odbiciem}} \cdot \text{restitution} 
-$$ 
  
-===== 2. Równania ruchu =====+---- 
 + 
 +===== 🧮 Obliczenia sił i przyspieszeń ===== 
 + 
 +==== Kod: ==== 
 + 
 +<code python> 
 +Fw = wind_force 
 +ax_acc = Fw / m 
 +ay_acc = -g 
 +</code>
  
-```python +Zgodnie z II zasadą dynamiki Newtona:
-ax_acc = Fw / m      # Przyspieszenie poziome od wiatru +
-ay_acc = -g          # Przyspieszenie pionowe (grawitacja)+
  
 +  * Siła wiatru generuje przyspieszenie poziome: $$ a_x = \frac{F_{\text{wiatr}}}{m} $$
 +  * Przyspieszenie pionowe jest równe przyspieszeniu ziemskiemu: $$ a_y = -g $$
 +
 +
 +----
 +
 +===== 🧠 Kinematyka ruchu =====
 +
 +<code python>
 vx += ax_acc * time_step vx += ax_acc * time_step
 vy += ay_acc * time_step vy += ay_acc * time_step
- 
 x += vx * time_step + 0.5 * ax_acc * time_step**2 x += vx * time_step + 0.5 * ax_acc * time_step**2
 y += vy * time_step + 0.5 * ay_acc * time_step**2 y += vy * time_step + 0.5 * ay_acc * time_step**2
-```+</code>
  
-Tutaj zastosowano klasyczne równania kinematyki:+Używamy podstawowych równań kinematyki:
  
 $$ $$
-a_x = \frac{F_{\text{wiatr}}}{m}\quad a_y = -g+v_0 + a \cdot \Delta t \\ 
 +s = s_0 + v \cdot \Delta t + \frac{1}{2\cdot \Delta t^2
 $$ $$
  
-$$ 
-v = v_0 + a \cdot \Delta t 
-$$ 
  
-$$ +----
-x = x_0 + v \cdot \Delta t + \frac{1}{2} a \cdot \Delta t^2 +
-$$+
  
-===== 3. Odbicia i tarcie =====+===== 🪨 Odbicie od ziemi i tarcie =====
  
-```python+<code python>
 if y <= y_min: if y <= y_min:
-    y = y_min 
     vy = -vy * restitution     vy = -vy * restitution
     if abs(vy) < 0.5:     if abs(vy) < 0.5:
-        friction_acc friction_coefficient * g +        vx -\dots \text{(siła tarcia)} 
-        ... +</code>
-```+
  
-Gdy kulka uderza o ziemię, odwracana jest pionowa składowa prędkości i zmniejszana zgodnie z:+Siła tarcia kinetycznego:
  
 $$ $$
-v_y' -v_y \cdot \text{restitution}+F_{\text{tarcia}} \mu \cdot m \cdot g \\ 
 +a_{\text{tarcia}} = \frac{F_{\text{tarcia}}}{m} = \mu \cdot g
 $$ $$
  
-Jeśli prędkość pionowa jest mała, działa **tarcie kinetyczne**: 
  
-$$ +----
-F_{\text{tarcie}} = \mu \cdot m \cdot g +
-$$+
  
-Co daje przyspieszenie hamujące:+===== 📈 Wektory sił i wykresy =====
  
-$$ +Kod rysuje wektory:
-a_{\text{tarcie}} = \mu \cdot g +
-$$+
  
-===== 4. Wizualizacja sił wektorowych =====+  * Grawitacji – zawsze w dół 
 +  * Wiatru – poziomo 
 +  * Prędkości – dynamicznie
  
-```python +<code python> 
-g_vector = draw_arrow(x, y, 0, -1, 'blue'+draw_arrow(x, y, vx * scale, vy * scale, 'purple'
-wind_vector = draw_arrow(x, y, wind_force, 0, 'green'+</code>
-resultant_vector = draw_arrow(x, y, vx * velocity_scale, vy * velocity_scale, 'purple'+
-```+
  
-Strzałki reprezentują: 
-  * siłę grawitacji – zawsze skierowaną w dół, 
-  * siłę wiatru – poziomą, 
-  * wektor prędkości – skalowaną wartość prędkości całkowitej. 
  
-Każdy wektor może być analizowany za pomocą równań składowych lub w zapisie biegunowym:+----
  
-$$ +===== 🧭 Wektory na wykresie biegunowym ===== 
-|\vec{v}| \sqrt{v_x^2 + v_y^2}, \quad \theta \arctan\left(\frac{v_y}{v_x}\right+ 
-$$+<code python> 
 +draw_polar_arrow(polar_ax, angle, magnitude, color
 +</code>
  
-===== 5Wykresy dodatkowe =====+Ten fragment przelicza wartości sił i prędkości do współrzędnych biegunowych. Dzięki temu użytkownik może obserwować ich kierunki i względne wartości.
  
-Dwa dodatkowe wykresy pokazują zmiany wartości w czasie: 
-  * prędkość całkowita: \( v = \sqrt{v_x^2 + v_y^2} \) 
-  * przyspieszenie całkowite: \( a = \sqrt{a_x^2 + a_y^2} \) 
  
-```python +----
-line_speed.set_data(time_list, speed_list) +
-line_acc.set_data(time_list, acc_list) +
-```+
  
-===== 6. Wykres biegunowy =====+===== 📊 Wykresy prędkości i przyspieszenia =====
  
-```python +<code python> 
-draw_polar_arrow(polar_ax, gravity_angle, gravity_magnitude, 'blue', 'Gravity'+current_speed = np.sqrt(vx**2 + vy**2
-draw_polar_arrow(polar_ax, wind_angle, wind_magnitude, 'green', 'Wind'+net_acc = np.sqrt(ax_acc**2 + ay_acc**2
-draw_polar_arrow(polar_ax, velocity_angle, velocity_magnitude, 'purple', 'Velocity'+</code>
-```+
  
-Wykres biegunowy przedstawia kierunki i wartości wektorów sił oraz prędkości.+Wartości te są dodawane do list i rysowane w czasie rzeczywistym.
  
-Zastosowanie układu biegunowego ułatwia analizę zależności kierunkowych między siłami i ruchem. 
  
-===== 7. Interfejs GUI =====+----
  
-```python +===== 🧵 Podsumowanie =====
-wind_slider tk.Scale(..., command=update_wind) +
-spring_slider tk.Scale(..., command=update_spring) +
-```+
  
-GUI umożliwia użytkownikowi interaktywne sterowanie: +Ten skrypt to przykład dynamicznej symulacji ruchu w dwuwymiarowym polu sił, uwzględniającej:
-  * **siłą wiatru** (od -2 do 2 N), +
-  * **współczynnikiem sprężystości** (od 0 do 1), +
-  * restartowaniem symulacji.+
  
-===== 8. Podsumowanie =====+  * Grawitację 
 +  * Wiatr jako siłę zewnętrzną 
 +  * Sprężystość przy zderzeniu z podłożem 
 +  * Tarcie dynamiczne przy niskiej prędkości
  
-Symulacja umożliwia dynamiczną analizę ruchu ciała polu sił z uwzględnieniem podstawowych praw fizyki:+Dzięki interfejsowi graficznemu użytkownik może manipulować parametrami i obserwować efekty fizyczne czasie rzeczywistym.
  
-  * II zasada dynamiki Newtona: \( \vec{F} = m \vec{a} \) 
-  * Zasady kinematyki dla ruchu jednostajnie zmiennego 
-  * Prawo odbicia i tarcia dynamicznego 
  
-Kod stanowi przykład połączenia **symulacji fizycznej**, **wizualizacji danych** oraz **interfejsu użytkownika**. 
  
  
narzedzia/apple_sim_py.1746612082.txt.gz · ostatnio zmienione: 2025/05/07 12:01 przez administrator