mirror of
https://github.com/3b1b/manim.git
synced 2026-04-26 03:00:23 -04:00
throwing darts
This commit is contained in:
@@ -1121,7 +1121,7 @@ class RowOfDice(VGroup):
|
||||
|
||||
|
||||
|
||||
class ShowUncertainty(PiCreatureScene):
|
||||
class ShowUncertainty1(PiCreatureScene):
|
||||
|
||||
def throw_a_die(self):
|
||||
|
||||
@@ -1132,21 +1132,28 @@ class ShowUncertainty(PiCreatureScene):
|
||||
new_hist = self.hist_from_tallies()
|
||||
|
||||
self.play(
|
||||
ApplyMethod(face.submobjects[0].set_fill, {"opacity": 1}, rate_func = there_and_back),
|
||||
Transform(self.dice_histogram, new_hist)
|
||||
ApplyMethod(face.submobjects[0].set_fill, {"opacity": 1},
|
||||
rate_func = there_and_back,
|
||||
run_time = 0.3,
|
||||
),
|
||||
)
|
||||
self.play(
|
||||
Transform(self.dice_histogram, new_hist,
|
||||
run_time = 0.5)
|
||||
)
|
||||
|
||||
|
||||
|
||||
def hist_from_tallies(self):
|
||||
hist = Histogram(0.5 * np.ones(6), self.tallies,
|
||||
x_scale = self.row_of_dice.get_width() / np.size(self.tallies)
|
||||
hist = Histogram(np.ones(6), self.tallies,
|
||||
mode = "widths",
|
||||
x_labels = "none",
|
||||
y_scale = 0.5
|
||||
y_scale = 0.5,
|
||||
x_scale = x_scale
|
||||
)
|
||||
|
||||
hist.next_to(self.row_of_dice, UP)
|
||||
hist.stretch_to_fit_width(self.row_of_dice.get_width())
|
||||
return hist
|
||||
|
||||
def construct(self):
|
||||
@@ -1154,18 +1161,58 @@ class ShowUncertainty(PiCreatureScene):
|
||||
self.row_of_dice = RowOfDice().scale(0.5).move_to(3 * DOWN)
|
||||
self.add(self.row_of_dice)
|
||||
|
||||
self.tallies = np.ones(6)
|
||||
self.tallies = np.zeros(6)
|
||||
self.dice_histogram = self.hist_from_tallies()
|
||||
|
||||
self.add(self.dice_histogram)
|
||||
|
||||
for i in range(30):
|
||||
self.throw_a_die()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.wait()
|
||||
|
||||
|
||||
|
||||
|
||||
class ShowUncertainty2(PiCreatureScene):
|
||||
|
||||
|
||||
def throw_darts(self, n, run_time = 1):
|
||||
|
||||
points = np.random.normal(
|
||||
loc = self.dartboard.get_center(),
|
||||
scale = 0.6 * np.ones(3),
|
||||
size = (n,3)
|
||||
)
|
||||
points[:,2] = 0
|
||||
dots = VGroup()
|
||||
for point in points:
|
||||
dot = Dot(point, radius = 0.04, fill_opacity = 0.7)
|
||||
dots.add(dot)
|
||||
self.add(dot)
|
||||
|
||||
self.play(
|
||||
LaggedStart(FadeIn, dots, lag_ratio = 0.01, run_time = run_time)
|
||||
)
|
||||
|
||||
|
||||
def construct(self):
|
||||
|
||||
self.dartboard = ImageMobject("dartboard").scale(2)
|
||||
dartboard_circle = Circle(
|
||||
radius = self.dartboard.get_width() / 2,
|
||||
fill_color = BLACK,
|
||||
fill_opacity = 0.5,
|
||||
stroke_color = WHITE,
|
||||
stroke_width = 5
|
||||
)
|
||||
self.dartboard.add(dartboard_circle)
|
||||
|
||||
self.add(self.dartboard)
|
||||
|
||||
self.throw_darts(5,5)
|
||||
self.throw_darts(20,5)
|
||||
self.throw_darts(100,5)
|
||||
self.throw_darts(1000,5)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user