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