mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00
111 lines
3 KiB
Python
111 lines
3 KiB
Python
from manimlib.imports import *
|
|
|
|
class FractalCreation(Scene):
|
|
CONFIG = {
|
|
"fractal_class" : PentagonalFractal,
|
|
"max_order" : 5,
|
|
"transform_kwargs" : {
|
|
"path_arc" : np.pi/6,
|
|
"lag_ratio" : 0.5,
|
|
"run_time" : 2,
|
|
},
|
|
"fractal_kwargs" : {},
|
|
}
|
|
def construct(self):
|
|
fractal = self.fractal_class(order = 0, **self.fractal_kwargs)
|
|
self.play(FadeIn(fractal))
|
|
for order in range(1, self.max_order+1):
|
|
new_fractal = self.fractal_class(
|
|
order = order,
|
|
**self.fractal_kwargs
|
|
)
|
|
fractal.align_data(new_fractal)
|
|
self.play(Transform(
|
|
fractal, new_fractal,
|
|
**self.transform_kwargs
|
|
))
|
|
self.wait()
|
|
self.wait()
|
|
self.fractal = fractal
|
|
|
|
class PentagonalFractalCreation(FractalCreation):
|
|
pass
|
|
|
|
class DiamondFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : DiamondFractal,
|
|
"max_order" : 6,
|
|
"fractal_kwargs" : {"height" : 6}
|
|
}
|
|
|
|
class PiCreatureFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : PiCreatureFractal,
|
|
"max_order" : 6,
|
|
"fractal_kwargs" : {"height" : 6},
|
|
"transform_kwargs" : {
|
|
"lag_ratio" : 0,
|
|
"run_time" : 2,
|
|
},
|
|
}
|
|
def construct(self):
|
|
FractalCreation.construct(self)
|
|
fractal = self.fractal
|
|
smallest_pi = fractal[0][0]
|
|
zoom_factor = 0.1/smallest_pi.get_height()
|
|
fractal.generate_target()
|
|
fractal.target.shift(-smallest_pi.get_corner(UP+LEFT))
|
|
fractal.target.scale(zoom_factor)
|
|
self.play(MoveToTarget(fractal, run_time = 10))
|
|
self.wait()
|
|
|
|
class QuadraticKochFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : QuadraticKoch,
|
|
"max_order" : 5,
|
|
"fractal_kwargs" : {"radius" : 10},
|
|
# "transform_kwargs" : {
|
|
# "lag_ratio" : 0,
|
|
# "run_time" : 2,
|
|
# },
|
|
}
|
|
|
|
class KochSnowFlakeFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : KochSnowFlake,
|
|
"max_order" : 6,
|
|
"fractal_kwargs" : {
|
|
"radius" : 6,
|
|
"num_submobjects" : 100,
|
|
},
|
|
"transform_kwargs" : {
|
|
"lag_ratio" : 0.5,
|
|
"path_arc" : np.pi/6,
|
|
"run_time" : 2,
|
|
},
|
|
}
|
|
|
|
class WonkyHexagonFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : WonkyHexagonFractal,
|
|
"max_order" : 5,
|
|
"fractal_kwargs" : {"height" : 6},
|
|
}
|
|
|
|
class SierpinskiFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : Sierpinski,
|
|
"max_order" : 6,
|
|
"fractal_kwargs" : {"height" : 6},
|
|
"transform_kwargs" : {
|
|
"path_arc" : 0,
|
|
},
|
|
}
|
|
|
|
class CircularFractalCreation(FractalCreation):
|
|
CONFIG = {
|
|
"fractal_class" : CircularFractal,
|
|
"max_order" : 5,
|
|
"fractal_kwargs" : {"height" : 6},
|
|
}
|
|
|