Merge remote-tracking branch 'origin/eop' into eop

This commit is contained in:
Ben Hambrecht
2018-04-05 21:24:25 +02:00

View File

@ -0,0 +1,65 @@
from big_ol_pile_of_manim_imports import *
from eop.pascal import *
WIDTH = 6
HEIGHT = 0.25
COLOR_HEADS = YELLOW
COLOR_TAILS = BLUE
NB_ROWS = 28
class AreaSplittingScene(Scene):
def create_rect_row(self,n):
rects_group = VGroup()
for k in range(n+1):
proportion = float(choose(n,k)) / 2**n
new_rect = Rectangle(
width = proportion * WIDTH,
height = HEIGHT,
fill_color = graded_color(n,k),
fill_opacity = 1
)
new_rect.next_to(rects_group,RIGHT,buff = 0)
rects_group.add(new_rect)
return rects_group
def split_rect_row(self,rect_row):
split_row = VGroup()
for rect in rect_row.submobjects:
half = rect.copy().stretch_in_place(0.5,0)
left_half = half.next_to(rect.get_center(),LEFT,buff = 0)
right_half = half.copy().next_to(rect.get_center(),RIGHT,buff = 0)
split_row.add(left_half, right_half)
return split_row
def construct(self):
rect_row = self.create_rect_row(0)
rect_row.move_to(3.5*UP + 0*HEIGHT*DOWN)
self.add(rect_row)
for n in range(NB_ROWS):
# copy and shift
new_rect_row = rect_row.copy()
self.add(new_rect_row)
self.play(new_rect_row.shift,HEIGHT * DOWN)
self.wait()
#split
split_row = self.split_rect_row(new_rect_row)
self.play(FadeIn(split_row))
self.wait()
# merge
rect_row = self.create_rect_row(n+1)
rect_row.move_to(3.5*UP + (n+1)*HEIGHT*DOWN)
self.play(FadeIn(rect_row))
self.wait()