基本实现了动画。
This commit is contained in:
parent
5dc1613d2a
commit
13e25832ed
|
|
@ -0,0 +1,91 @@
|
|||
import matplotlib.pyplot as plt
|
||||
from functools import wraps
|
||||
import numpy as np
|
||||
|
||||
|
||||
class Animation:
|
||||
def __init__(self) -> None:
|
||||
fig, ax = plt.subplots()
|
||||
self._fig = fig
|
||||
self._ax = ax
|
||||
self._ticks = 0
|
||||
self._disable = False
|
||||
self.init_fig()
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def switch_decorator(func):
|
||||
@wraps(func)
|
||||
def not_run(cls, *args, **kwargs):
|
||||
# print("not run")
|
||||
pass
|
||||
|
||||
@wraps(func)
|
||||
def wrapTheFunction(cls, *args, **kwargs):
|
||||
if not cls._disable:
|
||||
# print("desc")
|
||||
return func(cls, *args, **kwargs)
|
||||
return not_run(cls,*args, **kwargs)
|
||||
|
||||
return wrapTheFunction
|
||||
|
||||
def disable(self, _disable):
|
||||
self._disable = _disable
|
||||
@switch_decorator
|
||||
def init_fig(self):
|
||||
ax = self._ax
|
||||
ax.set_aspect(1)
|
||||
ax.set_xlim([-500, 500])
|
||||
ax.set_ylim([-500, 500])
|
||||
@switch_decorator
|
||||
def show(self):
|
||||
self._fig.show()
|
||||
|
||||
@switch_decorator
|
||||
def add_rg_line(self, line_func):
|
||||
ax = self._ax
|
||||
x = np.linspace(0, 300)
|
||||
y = line_func(x)
|
||||
ax.plot(x, y)
|
||||
@switch_decorator
|
||||
def add_rs(self, rs, rs_x, rs_y):
|
||||
ax = self._ax
|
||||
ax.add_artist(plt.Circle((rs_x, rs_y), rs, fill=False))
|
||||
@switch_decorator
|
||||
def add_rc(self, rc, rc_x, rc_y):
|
||||
ax = self._ax
|
||||
ax.add_artist(plt.Circle((rc_x, rc_y), rc, fill=False))
|
||||
|
||||
# 增加暴露弧范围
|
||||
@switch_decorator
|
||||
def add_expose_area(
|
||||
self,
|
||||
rc_x,
|
||||
rc_y,
|
||||
intersection_x1,
|
||||
intersection_y1,
|
||||
intersection_x2,
|
||||
intersection_y2,
|
||||
):
|
||||
ax = self._ax
|
||||
ax.plot([rc_x, intersection_x1], [rc_y, intersection_y1], color="red")
|
||||
ax.plot([rc_x, intersection_x2], [rc_y, intersection_y2], color="red")
|
||||
pass
|
||||
@switch_decorator
|
||||
def clear(self):
|
||||
ax = self._ax
|
||||
# fig = self._fig
|
||||
ax.cla()
|
||||
@switch_decorator
|
||||
def pause(self):
|
||||
# fig=self._fig
|
||||
# print('tick')
|
||||
ax = self._ax
|
||||
self._ticks += 1
|
||||
ticks = self._ticks
|
||||
ax.set_title(f"{ticks}")
|
||||
plt.pause(0.02)
|
||||
self.clear()
|
||||
self.init_fig()
|
||||
|
||||
pass
|
||||
Loading…
Reference in New Issue