epicycloids

Code

May 25th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.07 KB | None | 0 0
  1. from manimlib.imports import *
  2.  
  3. class ClockOrganization(VGroup):
  4.   CONFIG = {
  5.     "numbers" : 4,
  6.     "radius" : 3.1,
  7.     "color" : WHITE
  8.   }
  9.  
  10.   def __init__(self, **kwargs):
  11.     digest_config(self, kwargs, locals())
  12.     self.generate_nodes()
  13.     VGroup.__init__(self, *self.node_list,**kwargs)
  14.    
  15.   def generate_nodes(self):
  16.     self.node_list = []
  17.     for i in range(self.numbers):
  18.       mobject = VMobject()
  19.       number = TexMobject(str(i+1))
  20.       circle = Circle(radius=0.4,color=self.color)
  21.       mobject.add(number)
  22.       mobject.add(circle)
  23.       mobject.move_to(
  24.         self.radius * np.cos((-TAU / self.numbers) * i + 17*TAU / 84) * RIGHT
  25.         + self.radius * np.sin((-TAU / self.numbers) * i + 17*TAU / 84) * UP
  26.       )
  27.       self.node_list.append(mobject)
  28.  
  29.   def color_node(self, node, color):
  30.     selected_node=self.node_list[node].copy()
  31.     selected_node.set_color(color)
  32.     return selected_node
  33.  
  34. COLOR_LIST = ["#3b661a",
  35.               "#ea0099",
  36.               "#00dc82",
  37.               "#6047b8",
  38.               "#c788ff",
  39.               "#65b000",
  40.               "#ffcd34",
  41.               "#8b3798",
  42.               "#d29800",
  43.               "#535593",
  44.               "#d85e00",
  45.               "#6debff",
  46.               "#a62370",
  47.               "#01b9a3",
  48.               "#f5b5ff",
  49.               "#806700",
  50.               "#efd1ff",
  51.               "#844e28",
  52.               "#c3d9ff",
  53.               "#3b6355",
  54.               "#ffe6f4"]
  55.  
  56. COORDINATE_LIST = [0.818*UP,1*RIGHT+0.241*UP]
  57.      
  58. class Testing(Scene):
  59.   def construct(self):
  60.     test = ClockOrganization(numbers=21)
  61.     self.play(Write(test), run_time=1.5)
  62.     self.wait(2)
  63.     for group in range(test.numbers):
  64.       self.play(ReplacementTransform(
  65.         test.node_list[group],
  66.         test.color_node(group,COLOR_LIST[group])
  67.       ))
  68.     for i in range(len(COORDINATE_LIST)):
  69.       replacement_node = test[i].copy()
  70.       replacement_node.move_to(COORDINATE_LIST[i])
  71.       self.play(ReplacementTransform(
  72.         test[i],
  73.         replacement_node
  74.       ))
  75.     self.wait()
Advertisement
Add Comment
Please, Sign In to add comment