3b1b-manim/animation/animation.py

93 lines
1.9 KiB
Python
Raw Normal View History

2015-06-10 22:00:35 -07:00
from PIL import Image
from colour import Color
import numpy as np
import warnings
import time
import os
import progressbar
import inspect
from helpers import *
2015-11-23 10:34:42 -08:00
from mobject import Mobject
2015-06-10 22:00:35 -07:00
class Animation(object):
DEFAULT_CONFIG = {
"run_time" : DEFAULT_ANIMATION_RUN_TIME,
"alpha_func" : smooth,
"name" : None,
}
def __init__(self, mobject, **kwargs):
2015-10-20 21:55:46 -07:00
mobject = instantiate(mobject)
assert(isinstance(mobject, Mobject))
digest_config(self, kwargs, locals())
self.starting_mobject = self.mobject.copy()
if self.alpha_func is None:
self.alpha_func = (lambda x : x)
if self.name is None:
self.name = self.__class__.__name__ + str(self.mobject)
self.update(0)
2015-06-10 22:00:35 -07:00
def __str__(self):
return self.name
def update(self, alpha):
if alpha < 0:
2015-06-27 04:49:10 -07:00
alpha = 0.0
2015-06-10 22:00:35 -07:00
if alpha > 1:
2015-06-27 04:49:10 -07:00
alpha = 1.0
2015-06-10 22:00:35 -07:00
self.update_mobject(self.alpha_func(alpha))
def filter_out(self, *filter_functions):
self.filter_functions += filter_functions
return self
def restrict_height(self, height):
self.restricted_height = min(height, SPACE_HEIGHT)
return self
def restrict_width(self, width):
self.restricted_width = min(width, SPACE_WIDTH)
return self
def shift(self, vector):
2015-10-06 15:27:12 -07:00
self.spatial_center += vector
2015-06-10 22:00:35 -07:00
return self
def set_run_time(self, time):
self.run_time = time
return self
def set_alpha_func(self, alpha_func):
if alpha_func is None:
alpha_func = lambda x : x
self.alpha_func = alpha_func
return self
def set_name(self, name):
self.name = name
return self
def update_mobject(self, alpha):
#Typically ipmlemented by subclass
pass
def clean_up(self):
2015-06-19 08:31:02 -07:00
self.update(1)
2015-06-10 22:00:35 -07:00
2015-06-27 04:49:10 -07:00
2015-06-10 22:00:35 -07:00