def _set_start(self): if isinstance(self._handle, Text): self._i_value = self._handle.get_fontsize() elif isinstance(self._handle, Axes): current_state = self._handle.get_position() width = current_state.x1 - current_state.x0 height = current_state.y1 - current_state.y0 self._i_value = Vec2D(width, height)
c = .2 alpha = 2 * np.pi / 16 beta = .1 C = Circle(0, a) gamma = -4 * np.pi * U * a * np.sin(beta + alpha) # Circulation F = U * z * sympy.exp(-1j * alpha) + \ U * (a ** 2) * sympy.exp(1j * alpha) / z - \ 1j * gamma * sympy.ln(z) / (2 * np.pi) levels = np.arange(-2.8, 4.8, 0.2).tolist() cp = ae.add_element( ComplexPotential(Vec2D(.11, .11), Vec2D(.33, .33), F, levels, C, lambda Z: np.absolute(Z) <= a, typ="contour", axes_data=AxesData(xlim=[-3, 3], ylim=[-3, 3], aspect='equal')), 0, 10) cp2 = ae.add_element( ComplexPotential(Vec2D(.11, .5), Vec2D(.33, .33), F, levels,
from Engine.AnimationEngine import AnimationEngine from Engine.Elements.GraphElements import Sine from Engine.Elements.AxesElement import AxesData from Engine.MathsHelpers import Vec2D from Engine.Keyframe.Keyframe import KeyFrame from Engine.Keyframe.Parameter import SetParam, InterpParam ae = AnimationEngine(1080, 24) Sine1 = ae.add_element(Sine(Vec2D(.1, .25), Vec2D(.35, .5), axes_data=AxesData(xlim=[-3, 3], ylim=[-3, 3])), 0, 10) Sine2 = ae.add_element(Sine(Vec2D(.55, .25), Vec2D(.35, .5), axes_data=AxesData(xlim=[-3, 3], ylim=[-3, 3])), 0, 10) Sine1Params = Sine1.get_parameters() Sine2Params = Sine2.get_parameters() case = 2 # Setting parameter values and attaching keyframe sequence using SetParam if case == 0: Sine1Params['offset'].set_value(2) Sine2Params['offset'].set_value(-2) sequence1 = [KeyFrame([SetParam(Sine1Params['offset'], 1)], start_t=.33, end_t=.66), KeyFrame([SetParam(Sine1Params['offset'], 0)], start_t=.66, end_t=1.0)] sequence2 = [KeyFrame([SetParam(Sine2Params['offset'], -1)], start_t=.33, end_t=0.66), KeyFrame([SetParam(Sine2Params['offset'], 0)], start_t=.66, end_t=1.0)] Sine1.attach_sequence(sequence1) Sine2.attach_sequence(sequence2)
def _set_start(self): if isinstance(self._handle, Text): self._i_value = Vec2D(self._handle.get_position()) elif isinstance(self._handle, Axes): self._i_value = Vec2D(self._handle.get_position().x0, self._handle.get_position().y0)
def __init__(self, end: Vec2D, origin: Vec2D = Vec2D(0, 0), absolute: bool = False): super(Scale2D, self).__init__(end, absolute) self._origin = origin
def __init__(self, end: float, origin: Vec2D = Vec2D(0, 0), absolute: bool = False): # Minus is to make positive rotations clockwise super(Rotate, self).__init__(-end, absolute) self._origin = origin
from Engine.AnimationEngine import AnimationEngine from Engine.Elements.GraphElements import Sine, Cube from Engine.Elements.AxesElement import AxesData from Engine.MathsHelpers import Vec2D ae = AnimationEngine(1080, 24) Sine = ae.add_element( Sine(Vec2D(.11, .33), Vec2D(.33, .33), axes_data=AxesData(xlim=[-3, 3], ylim=[-3, 3], aspect='equal')), 2, 10) Cube = ae.add_element( Cube(Vec2D(.5, .33), Vec2D(.33, .33), axes_data=AxesData(xlim=[-2, 2], ylim=[-2, 2], zlim=[-2, 2], aspect='equal')), 2, 10) ae.browse(10)
from Engine.AnimationEngine import AnimationEngine from Engine.Elements.TextElement import TextElement from Engine.MathsHelpers import Vec2D ae = AnimationEngine(1080, 24) text = ae.add_element( TextElement(Vec2D(.5, .8), "Hello", 72, horizontalalignment='center', verticalalignment='center', color='white'), 2, 10) ae.browse(10)