mirror of
https://github.com/3b1b/manim.git
synced 2025-07-30 13:34:19 +08:00
Update Decimal number changing
This commit is contained in:
@ -1,9 +1,7 @@
|
||||
|
||||
|
||||
from constants import *
|
||||
|
||||
from animation.animation import Animation
|
||||
from mobject.numbers import DecimalNumber
|
||||
from utils.bezier import interpolate
|
||||
from utils.config_ops import digest_config
|
||||
|
||||
@ -19,15 +17,6 @@ class ChangingDecimal(Animation):
|
||||
|
||||
def __init__(self, decimal_number_mobject, number_update_func, **kwargs):
|
||||
digest_config(self, kwargs, locals())
|
||||
self.decimal_number_config = dict(
|
||||
decimal_number_mobject.initial_config
|
||||
)
|
||||
for attr in "num_decimal_places", "show_ellipsis", "include_sign":
|
||||
value = getattr(self, attr)
|
||||
if value is not None:
|
||||
self.decimal_number_config[attr] = value
|
||||
if hasattr(self.decimal_number_mobject, "background_rectangle"):
|
||||
self.decimal_number_config["include_background_rectangle"] = True
|
||||
if self.tracked_mobject:
|
||||
dmc = decimal_number_mobject.get_center()
|
||||
tmc = self.tracked_mobject.get_center()
|
||||
@ -39,17 +28,9 @@ class ChangingDecimal(Animation):
|
||||
self.update_position()
|
||||
|
||||
def update_number(self, alpha):
|
||||
decimal = self.decimal_number_mobject
|
||||
new_number = self.number_update_func(alpha)
|
||||
new_decimal = DecimalNumber(
|
||||
new_number, **self.decimal_number_config
|
||||
self.decimal_number_mobject.set_value(
|
||||
self.number_update_func(alpha)
|
||||
)
|
||||
new_decimal.match_height(decimal)
|
||||
new_decimal.move_to(decimal)
|
||||
new_decimal.match_style(decimal)
|
||||
|
||||
decimal.submobjects = new_decimal.submobjects
|
||||
decimal.number = new_number
|
||||
|
||||
def update_position(self):
|
||||
if self.position_update_func is not None:
|
||||
|
@ -21,8 +21,8 @@ class DecimalNumber(VMobject):
|
||||
|
||||
def __init__(self, number, **kwargs):
|
||||
VMobject.__init__(self, **kwargs)
|
||||
# TODO, make this more ediable with a getter and setter
|
||||
self.number = number
|
||||
self.initial_config = kwargs
|
||||
|
||||
if isinstance(number, complex):
|
||||
formatter = self.get_complex_formatter()
|
||||
@ -96,6 +96,20 @@ class DecimalNumber(VMobject):
|
||||
def get_complex_formatter(self, **kwargs):
|
||||
pass
|
||||
|
||||
def set_value(self, number, **config):
|
||||
full_config = dict(self.initial_config)
|
||||
full_config.update(config)
|
||||
new_decimal = DecimalNumber(number, **full_config)
|
||||
new_decimal.match_height(self)
|
||||
new_decimal.move_to(self, LEFT)
|
||||
new_decimal.match_style(self)
|
||||
|
||||
self.submobjects = new_decimal.submobjects
|
||||
self.number = number
|
||||
|
||||
def get_value(self):
|
||||
return self.number
|
||||
|
||||
|
||||
class Integer(DecimalNumber):
|
||||
CONFIG = {
|
||||
|
@ -55,9 +55,6 @@ def digest_config(obj, kwargs, caller_locals={}):
|
||||
all_dicts += static_configs
|
||||
all_new_dicts = [kwargs, caller_locals] + static_configs
|
||||
obj.__dict__ = merge_config(all_dicts)
|
||||
# Keep track of the configuration of objects upon
|
||||
# instantiation
|
||||
obj.initial_config = merge_config(all_new_dicts)
|
||||
|
||||
|
||||
def merge_config(all_dicts):
|
||||
|
Reference in New Issue
Block a user