from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg,
NavigationToolbar2Tk
)
from matplotlib.figure import Figure
from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure
from matplotlib.widgets import TextBox
from matplotlib.widgets import Button
import tkinter as tk
import matplotlib
matplotlib.use('TkAgg')
x0 = 3
y0 = 3
z0 = 2
vx0 = -1
vy0 = 5
vz0 = 0
t0 = 0
tf = 2
m = np.array([1, 0, 0])
r = np.array([3, 3, 2])
Q = 1
a = 1
class Sim:
def mag_bewegung(t, D, m, Q, r, a):
x, vx, y, vy, z, vz = D
v = np.array([vx, vy, vz])
o = np.array([x, y, z])
ra = o - r
rar = np.sqrt(sum(ra*ra))
B = (3 * (np.dot(m, (ra)/rar))*((ra)/rar)-m)/rar*rar*rar
s = (Q*np.cross(v, B))/a
sx = s[0]
sy = s[1]
sz = s[2]
fun = [vx, sx, vy, sy, vz, sz]
return fun
def plotme(mag_bewegung):
D0 = [x0, y0, z0, vx0, vy0, vz0]
NumSol = solve_ivp(mag_bewegung, [t0, tf], D0, method="RK45", args=(
m, Q, r, a), atol=1e-8, rtol=1e-8)
aa, bb, cc, dd, ee, ff = NumSol.y
t = NumSol.t
ax = plt.figure().add_subplot(projection='3d')
# create the barchart
ax.plot(aa, bb, cc)
ax.set_xlabel('X-Koordinate')
ax.set_ylabel('Y-Koordinate')
ax.set_zlabel('Z-Koordinate')
plotme()
def updatePlot():
Sim.plotme()
app.update()
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title('Tkinter Matplotlib Demo')
# create a figure
figure = Figure(figsize=(6, 4), dpi=100)
# create FigureCanvasTkAgg object
figure_canvas = FigureCanvasTkAgg(figure, self)
# create the toolbar
NavigationToolbar2Tk(figure_canvas, self)
figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
Startknopf = tk.Button(text="Start", command=Sim.plotme())
Startknopf.pack()
MagnetX = tk.Entry()
MagnetX.pack()
if __name__ == '__main__':
app = App()
app.mainloop()