Найти в Дзене

Калькулятор дульной энергии пневматики на Python

*** Для любителей пневматического оружия необходимо знать дульную энергию своего оружия. Почему? Потому что величина дульной энергии используется (наряду с другими характеристиками) для законодательного регулирования оборота оружия. В Федеральном законе «Об оружии» указано, что пневматическое оружие с дульной энергией до 3 Дж не требует регистрации и не считается оружием. *** Дульная энергия – это начальная кинетическая энергия пули, измеренная на расстоянии не более 1 метра от дульного среза ствола оружия. Рассчитывается по формуле: E = m * v²/2, где E – дульная энергия (в джоулях); m – масса пули (в килограммах); v – начальная скорость пули (в метрах в секунду). С расстоянием скорость, а, следовательно, и кинетическая энергия пули уменьшается под воздействием сопротивления воздуха. Степень этого уменьшения определяется баллистическим коэффициентом пули. Для измерения скорости пули пневматического оружия используется так называемый хронограф. *** Первоначально сделал шаблон для расчёт

***

Для любителей пневматического оружия необходимо знать дульную энергию своего оружия.

Почему?

Потому что величина дульной энергии используется (наряду с другими характеристиками) для законодательного регулирования оборота оружия.

В Федеральном законе «Об оружии» указано, что пневматическое оружие с дульной энергией до 3 Дж не требует регистрации и не считается оружием.

***

Дульная энергия – это начальная кинетическая энергия пули, измеренная на расстоянии не более 1 метра от дульного среза ствола оружия.

Рассчитывается по формуле:

E = m * v²/2,

где E – дульная энергия (в джоулях);

m – масса пули (в килограммах);

v – начальная скорость пули (в метрах в секунду).

С расстоянием скорость, а, следовательно, и кинетическая энергия пули уменьшается под воздействием сопротивления воздуха. Степень этого уменьшения определяется баллистическим коэффициентом пули.

Для измерения скорости пули пневматического оружия используется так называемый хронограф.

***

Первоначально сделал шаблон для расчёта дульной энергии в Microsoft Office Excel [по формуле =ПРОИЗВЕД(0,001;B3;B2;B2)/2]:

Но потом решил создать программу для расчёта в Python.

***

Код программы с графическим интерфейсом для расчёта дульной энергии пневматического оружия:

# Author: Netler

#

# Copyright: (c) Netler 2021

import tkinter as tk

from tkinter import messagebox

def calculate_energy():

try:

# Получаем значения из полей ввода

v = float(entry_speed.get()) # начальная скорость, м/с

m = float(entry_mass.get()) # масса пули, г

# Проверяем, что значения положительные

if v <= 0 or m <= 0:

result_label.config(text="Некорректный ввод данных")

return

# Рассчитываем дульную энергию по формуле E = (0,001 * m * v²) / 2

E = (0.001 * m * v**2) / 2

# Выводим результат с округлением до 2 знаков после запятой

result_label.config(text=f"{E:.2f} Дж")

except ValueError:

# Если ввод некорректный (не число)

result_label.config(text="Некорректный ввод данных")

def close_app():

root.destroy()

# Создаём главное окно

root = tk.Tk()

root.title("Расчёт дульной энергии пневматического оружия")

root.geometry("500x400")

root.resizable(False, False) # Запрещаем изменение размера окна

# Заголовок

title_label = tk.Label(root, text="Расчёт дульной энергии пневматического оружия", font=("Arial", 14, "bold"))

title_label.pack(pady=10)

# Поле для ввода начальной скорости

speed_frame = tk.Frame(root)

speed_frame.pack(pady=5)

speed_label = tk.Label(speed_frame, text="Начальная скорость пули, v, м/с:")

speed_label.pack(side=tk.LEFT, padx=5)

entry_speed = tk.Entry(speed_frame, width=20)

entry_speed.pack(side=tk.LEFT)

# Поле для ввода массы пули

mass_frame = tk.Frame(root)

mass_frame.pack(pady=5)

mass_label = tk.Label(mass_frame, text="Масса пули, m, г:")

mass_label.pack(side=tk.LEFT, padx=5)

entry_mass = tk.Entry(mass_frame, width=20)

entry_mass.pack(side=tk.LEFT)

# Поле для вывода результата

result_frame = tk.Frame(root)

result_frame.pack(pady=15)

result_label_text = tk.Label(result_frame, text="Дульная энергия, E (Дж), E = (0,001 × m × v²) / 2:")

result_label_text.pack(side=tk.TOP)

result_label = tk.Label(result_frame, text="", font=("Arial", 12), fg="blue")

result_label.pack(side=tk.TOP)

# Кнопки

button_frame = tk.Frame(root)

button_frame.pack(pady=20)

calculate_button = tk.Button(button_frame, text="Вычислить", command=calculate_energy, width=12, bg="#4CAF50", fg="white")

calculate_button.pack(side=tk.LEFT, padx=10)

close_button = tk.Button(button_frame, text="Завершить", command=close_app, width=12, bg="#f44336", fg="white")

close_button.pack(side=tk.LEFT, padx=10)

# Запуск главного цикла обработки событий

root.mainloop()

***

Описание программы

1. Импорт библиотек:

Используется tkinter для создания графического интерфейса и messagebox (хотя в данном коде он не задействован, оставлен для возможного расширения функционала).

2. Функции:

• calculate_energy() – выполняет расчёт дульной энергии:

- Получает значения скорости (v) и массы (m) из полей ввода.

- Проверяет, что введённые значения – положительные числа.

- Применяет формулу E = (0,001 * m * v **2) / 2 (для удобства пользователя масса пули вводится в граммах, поэтому в расчёте применяется коэффициент 0,001).

- Выводит результат с точностью до 2 знаков после запятой или сообщение об ошибке.

• close_app() – закрывает приложение при нажатии кнопки «Завершить».

3. Создание интерфейса:

- Главное окно (root) имеет заголовок, размер 500×400 пикселей и фиксированный размер.

- Заголовок программы размещён вверху.

- Два поля ввода для скорости и массы с соответствующими подписями.

- Поле вывода результата с поясняющей формулой.

- Две кнопки: «Вычислить» (зелёная) и «Завершить» (красная).

4. Обработка ошибок:

- Если введены не числа или отрицательные значения, выводится сообщение «Некорректный ввод данных».

5. Визуальное оформление:

- Шрифты и цвета подобраны для лучшей читаемости.

- Элементы аккуратно размещены с отступами.

-2

***

Как запустить программу

1. Убедитесь, что у вас установлен Python (версия 3.x).

2. Сохраните код в файл с именем, например, gun_energy_calculator.py.

3. Запустите файл через командную строку (python gun_energy_calculator.py) или двойным щелчком (если ассоциировано с Python).