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 constants import *
|
||||||
|
|
||||||
from animation.animation import Animation
|
from animation.animation import Animation
|
||||||
from mobject.numbers import DecimalNumber
|
|
||||||
from utils.bezier import interpolate
|
from utils.bezier import interpolate
|
||||||
from utils.config_ops import digest_config
|
from utils.config_ops import digest_config
|
||||||
|
|
||||||
@ -19,15 +17,6 @@ class ChangingDecimal(Animation):
|
|||||||
|
|
||||||
def __init__(self, decimal_number_mobject, number_update_func, **kwargs):
|
def __init__(self, decimal_number_mobject, number_update_func, **kwargs):
|
||||||
digest_config(self, kwargs, locals())
|
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:
|
if self.tracked_mobject:
|
||||||
dmc = decimal_number_mobject.get_center()
|
dmc = decimal_number_mobject.get_center()
|
||||||
tmc = self.tracked_mobject.get_center()
|
tmc = self.tracked_mobject.get_center()
|
||||||
@ -39,17 +28,9 @@ class ChangingDecimal(Animation):
|
|||||||
self.update_position()
|
self.update_position()
|
||||||
|
|
||||||
def update_number(self, alpha):
|
def update_number(self, alpha):
|
||||||
decimal = self.decimal_number_mobject
|
self.decimal_number_mobject.set_value(
|
||||||
new_number = self.number_update_func(alpha)
|
self.number_update_func(alpha)
|
||||||
new_decimal = DecimalNumber(
|
|
||||||
new_number, **self.decimal_number_config
|
|
||||||
)
|
)
|
||||||
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):
|
def update_position(self):
|
||||||
if self.position_update_func is not None:
|
if self.position_update_func is not None:
|
||||||
|
@ -21,8 +21,8 @@ class DecimalNumber(VMobject):
|
|||||||
|
|
||||||
def __init__(self, number, **kwargs):
|
def __init__(self, number, **kwargs):
|
||||||
VMobject.__init__(self, **kwargs)
|
VMobject.__init__(self, **kwargs)
|
||||||
# TODO, make this more ediable with a getter and setter
|
|
||||||
self.number = number
|
self.number = number
|
||||||
|
self.initial_config = kwargs
|
||||||
|
|
||||||
if isinstance(number, complex):
|
if isinstance(number, complex):
|
||||||
formatter = self.get_complex_formatter()
|
formatter = self.get_complex_formatter()
|
||||||
@ -96,6 +96,20 @@ class DecimalNumber(VMobject):
|
|||||||
def get_complex_formatter(self, **kwargs):
|
def get_complex_formatter(self, **kwargs):
|
||||||
pass
|
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):
|
class Integer(DecimalNumber):
|
||||||
CONFIG = {
|
CONFIG = {
|
||||||
|
@ -55,9 +55,6 @@ def digest_config(obj, kwargs, caller_locals={}):
|
|||||||
all_dicts += static_configs
|
all_dicts += static_configs
|
||||||
all_new_dicts = [kwargs, caller_locals] + static_configs
|
all_new_dicts = [kwargs, caller_locals] + static_configs
|
||||||
obj.__dict__ = merge_config(all_dicts)
|
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):
|
def merge_config(all_dicts):
|
||||||
|
Reference in New Issue
Block a user