本文整理汇总了Python中mobject.vectorized_mobject.VMobject.get_bottom方法的典型用法代码示例。如果您正苦于以下问题:Python VMobject.get_bottom方法的具体用法?Python VMobject.get_bottom怎么用?Python VMobject.get_bottom使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mobject.vectorized_mobject.VMobject
的用法示例。
在下文中一共展示了VMobject.get_bottom方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle_mathy
# 需要导入模块: from mobject.vectorized_mobject import VMobject [as 别名]
# 或者: from mobject.vectorized_mobject.VMobject import get_bottom [as 别名]
def handle_mathy(self, creatures):
self.fade_all_but(creatures, 2)
physy, compy, mathy = creatures
v_color = YELLOW
w_color = BLUE
sum_color = GREEN
v_arrow = Vector([1, 1])
w_arrow = Vector([2, 1])
w_arrow.shift(v_arrow.get_end())
sum_arrow = Vector(w_arrow.get_end())
arrows = VMobject(v_arrow, w_arrow, sum_arrow)
arrows.scale(0.7)
arrows.to_edge(LEFT, buff = 2)
v_array = matrix_to_mobject([3, -5])
w_array = matrix_to_mobject([2, 1])
sum_array = matrix_to_mobject(["3+2", "-5+1"])
arrays = VMobject(
v_array, TexMobject("+"), w_array, TexMobject("="), sum_array
)
arrays.arrange_submobjects(RIGHT)
arrays.scale(0.75)
arrays.to_edge(RIGHT).shift(UP)
v_sym = TexMobject("\\vec{\\textbf{v}}")
w_sym = TexMobject("\\vec{\\textbf{w}}")
syms = VMobject(v_sym, TexMobject("+"), w_sym)
syms.arrange_submobjects(RIGHT)
syms.center().shift(2*UP)
statement = TextMobject("We'll ignore him \\\\ for now")
statement.highlight(PINK)
statement.scale_to_fit_width(arrays.get_width())
statement.next_to(arrays, DOWN, buff = 1.5)
circle = Circle()
circle.shift(syms.get_bottom())
VMobject(v_arrow, v_array, v_sym).highlight(v_color)
VMobject(w_arrow, w_array, w_sym).highlight(w_color)
VMobject(sum_arrow, sum_array).highlight(sum_color)
self.play(
Write(syms), Write(arrays),
ShowCreation(arrows, submobject_mode = "one_at_a_time"),
ApplyMethod(mathy.change_mode, "pondering"),
run_time = 2
)
self.play(Blink(mathy))
self.add_scaling(arrows, syms, arrays)
self.play(Write(statement))
self.play(ApplyMethod(mathy.change_mode, "sad"))
self.dither()
self.play(
ShowCreation(circle),
ApplyMethod(mathy.change_mode, "plain")
)
self.dither()
示例2: PiCreature
# 需要导入模块: from mobject.vectorized_mobject import VMobject [as 别名]
# 或者: from mobject.vectorized_mobject.VMobject import get_bottom [as 别名]
class PiCreature(SVGMobject):
CONFIG = {
"color" : BLUE_E,
"stroke_width" : 0,
"fill_opacity" : 1.0,
"initial_scale_factor" : 0.01,
"corner_scale_factor" : 0.75,
"flip_at_start" : False,
"is_looking_direction_purposeful" : False,
}
def __init__(self, mode = "plain", **kwargs):
self.parts_named = False
svg_file = os.path.join(
PI_CREATURE_DIR,
"PiCreatures_%s.svg"%mode
)
digest_config(self, kwargs, locals())
SVGMobject.__init__(self, svg_file, **kwargs)
self.init_colors()
if self.flip_at_start:
self.flip()
def name_parts(self):
self.mouth = self.submobjects[MOUTH_INDEX]
self.body = self.submobjects[BODY_INDEX]
self.pupils = VMobject(*[
self.submobjects[LEFT_PUPIL_INDEX],
self.submobjects[RIGHT_PUPIL_INDEX]
])
self.eyes = VMobject(*[
self.submobjects[LEFT_EYE_INDEX],
self.submobjects[RIGHT_EYE_INDEX]
])
self.submobjects = []
self.add(self.body, self.mouth, self.eyes, self.pupils)
self.parts_named = True
def init_colors(self):
self.set_stroke(color = BLACK, width = self.stroke_width)
if not self.parts_named:
self.name_parts()
self.mouth.set_fill(BLACK, opacity = 1)
self.body.set_fill(self.color, opacity = 1)
self.pupils.set_fill(BLACK, opacity = 1)
self.eyes.set_fill(WHITE, opacity = 1)
return self
def highlight(self, color):
self.body.set_fill(color)
return self
def move_to(self, destination):
self.shift(destination-self.get_bottom())
return self
def change_mode(self, mode):
curr_center = self.get_center()
curr_height = self.get_height()
should_be_flipped = self.is_flipped()
if self.is_looking_direction_purposeful:
looking_direction = self.get_looking_direction()
self.__init__(mode)
self.scale_to_fit_height(curr_height)
self.shift(curr_center)
if should_be_flipped ^ self.is_flipped():
self.flip()
if self.is_looking_direction_purposeful:
self.look(looking_direction)
return self
def look(self, direction):
self.is_looking_direction_purposeful = True
x, y = direction[:2]
for pupil, eye in zip(self.pupils.split(), self.eyes.split()):
pupil.move_to(eye, aligned_edge = direction)
#Some hacky nudging is required here
if y > 0 and x != 0: # Look up and to a side
nudge_size = pupil.get_height()/4.
if x > 0:
nudge = nudge_size*(DOWN+LEFT)
else:
nudge = nudge_size*(DOWN+RIGHT)
pupil.shift(nudge)
elif y < 0:
nudge_size = pupil.get_height()/8.
pupil.shift(nudge_size*UP)
return self
def get_looking_direction(self):
return np.sign(np.round(
self.pupils.get_center() - self.eyes.get_center(),
decimals = 2
))
def is_flipped(self):
return self.eyes.submobjects[0].get_center()[0] > \
self.eyes.submobjects[1].get_center()[0]
#.........这里部分代码省略.........