Added ability to give a unit to a decimal, and changing decimal

This commit is contained in:
Grant Sanderson 2018-01-23 12:04:56 -08:00
parent 9ded033c7c
commit 0c7698da55

View file

@ -10,7 +10,8 @@ class DecimalNumber(VMobject):
CONFIG = { CONFIG = {
"num_decimal_points" : 2, "num_decimal_points" : 2,
"digit_to_digit_buff" : 0.05, "digit_to_digit_buff" : 0.05,
"show_ellipsis" : False "show_ellipsis" : False,
"unit" : None,
} }
def __init__(self, number, **kwargs): def __init__(self, number, **kwargs):
digest_config(self, kwargs, locals()) digest_config(self, kwargs, locals())
@ -25,7 +26,9 @@ class DecimalNumber(VMobject):
if self.show_ellipsis: if self.show_ellipsis:
self.add(TexMobject("\\dots")) self.add(TexMobject("\\dots"))
if self.unit is not None:
self.add(TexMobject(self.unit))
self.arrange_submobjects( self.arrange_submobjects(
buff = self.digit_to_digit_buff, buff = self.digit_to_digit_buff,
aligned_edge = DOWN aligned_edge = DOWN
@ -36,6 +39,8 @@ class DecimalNumber(VMobject):
self.submobjects[1], LEFT, self.submobjects[1], LEFT,
buff = self.digit_to_digit_buff buff = self.digit_to_digit_buff
) )
if self.unit == "\\circ":
self[-1].align_to(self, UP)
class Integer(VGroup): class Integer(VGroup):
CONFIG = { CONFIG = {
@ -55,20 +60,18 @@ class ChangingDecimal(Animation):
CONFIG = { CONFIG = {
"num_decimal_points" : None, "num_decimal_points" : None,
"show_ellipsis" : None, "show_ellipsis" : None,
"spare_parts" : 2,
"position_update_func" : None, "position_update_func" : None,
"tracked_mobject" : None "tracked_mobject" : None
} }
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())
if self.num_decimal_points is None: self.decimal_number_config = dict(
self.num_decimal_points = decimal_number_mobject.num_decimal_points decimal_number_mobject.initial_config
if self.show_ellipsis is None:
self.show_ellipsis = decimal_number_mobject.show_ellipsis
decimal_number_mobject.add(*[
VectorizedPoint(decimal_number_mobject.get_corner(DOWN+LEFT))
for x in range(self.spare_parts)]
) )
for attr in "num_decimal_points", "show_ellipsis":
value = getattr(self, attr)
if value is not None:
self.decimal_number_config[attr] = value
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()
@ -83,12 +86,11 @@ class ChangingDecimal(Animation):
decimal = self.decimal_number_mobject decimal = self.decimal_number_mobject
new_number = self.number_update_func(alpha) new_number = self.number_update_func(alpha)
new_decimal = DecimalNumber( new_decimal = DecimalNumber(
new_number, new_number, **self.decimal_number_config
num_decimal_points = self.num_decimal_points,
show_ellipsis = self.show_ellipsis
) )
new_decimal.replace(decimal, dim_to_match = 1) new_decimal.match_height(decimal)
new_decimal.highlight(decimal.get_color()) new_decimal.move_to(decimal)
new_decimal.match_style(decimal)
decimal.submobjects = new_decimal.submobjects decimal.submobjects = new_decimal.submobjects
decimal.number = new_number decimal.number = new_number