-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtraj_calc.py
More file actions
53 lines (44 loc) · 1.48 KB
/
traj_calc.py
File metadata and controls
53 lines (44 loc) · 1.48 KB
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
import numpy as np
import tkinter as tk
from tkinter import ttk
def calculate():
try:
H_target = float(entry.get())
g = 9.8
results = []
for angle in range(10, 81):
theta_rad = np.radians(angle)
sin_theta = np.sin(theta_rad)
if sin_theta == 0:
continue
v0 = np.sqrt((2 * g * H_target) / (sin_theta ** 2))
results.append((angle, round(v0, 2)))
# 표 갱신
for row in tree.get_children():
tree.delete(row)
for angle, v0 in results:
tree.insert("", "end", values=(f"{angle}°", f"{v0} m/s"))
except ValueError:
entry.delete(0, tk.END)
entry.insert(0, "숫자 입력")
# GUI 구성
root = tk.Tk()
root.title("10112 송범규 주어진 최고 높이에 대한 각도-속력 계산기")
root.geometry("400x800")
root.resizable(False, False)
label = tk.Label(root, text="목표 최고 높이 (m):")
label.pack(pady=10)
entry = tk.Entry(root, justify="center")
entry.insert(0, "5")
entry.pack(pady=5)
btn = tk.Button(root, text="계산하기", command=calculate)
btn.pack(pady=10)
# 결과 표
columns = ("각도", "초기 속력")
tree = ttk.Treeview(root, columns=columns, show="headings", height=40)
tree.heading("각도", text="발사 각도")
tree.heading("초기 속력", text="필요한 속력")
tree.column("각도", anchor="center", width=100)
tree.column("초기 속력", anchor="center", width=150)
tree.pack()
root.mainloop()