constants.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. from __future__ import annotations
  2. import numpy as np
  3. from manimlib.config import get_aspect_ratio
  4. from manimlib.config import get_default_pixel_width
  5. from manimlib.config import get_default_pixel_height
  6. from manimlib.config import get_frame_height
  7. from typing import TYPE_CHECKING
  8. if TYPE_CHECKING:
  9. from typing import List
  10. from manimlib.typing import ManimColor, Vect3
  11. # Sizes relevant to default camera frame
  12. ASPECT_RATIO: float = get_aspect_ratio()
  13. FRAME_HEIGHT: float = get_frame_height()
  14. FRAME_WIDTH: float = FRAME_HEIGHT * ASPECT_RATIO
  15. FRAME_SHAPE: tuple[float, float] = (FRAME_WIDTH, FRAME_HEIGHT)
  16. FRAME_Y_RADIUS: float = FRAME_HEIGHT / 2
  17. FRAME_X_RADIUS: float = FRAME_WIDTH / 2
  18. DEFAULT_PIXEL_HEIGHT: int = get_default_pixel_height()
  19. DEFAULT_PIXEL_WIDTH: int = get_default_pixel_width()
  20. DEFAULT_FPS: int = 30
  21. SMALL_BUFF: float = 0.1
  22. MED_SMALL_BUFF: float = 0.25
  23. MED_LARGE_BUFF: float = 0.5
  24. LARGE_BUFF: float = 1
  25. DEFAULT_MOBJECT_TO_EDGE_BUFFER: float = MED_LARGE_BUFF
  26. DEFAULT_MOBJECT_TO_MOBJECT_BUFFER: float = MED_SMALL_BUFF
  27. # In seconds
  28. DEFAULT_WAIT_TIME: float = 1.0
  29. ORIGIN: Vect3 = np.array([0., 0., 0.])
  30. UP: Vect3 = np.array([0., 1., 0.])
  31. DOWN: Vect3 = np.array([0., -1., 0.])
  32. RIGHT: Vect3 = np.array([1., 0., 0.])
  33. LEFT: Vect3 = np.array([-1., 0., 0.])
  34. IN: Vect3 = np.array([0., 0., -1.])
  35. OUT: Vect3 = np.array([0., 0., 1.])
  36. X_AXIS: Vect3 = np.array([1., 0., 0.])
  37. Y_AXIS: Vect3 = np.array([0., 1., 0.])
  38. Z_AXIS: Vect3 = np.array([0., 0., 1.])
  39. NULL_POINTS = np.array([[0., 0., 0.]])
  40. # Useful abbreviations for diagonals
  41. UL: Vect3 = UP + LEFT
  42. UR: Vect3 = UP + RIGHT
  43. DL: Vect3 = DOWN + LEFT
  44. DR: Vect3 = DOWN + RIGHT
  45. TOP: Vect3 = FRAME_Y_RADIUS * UP
  46. BOTTOM: Vect3 = FRAME_Y_RADIUS * DOWN
  47. LEFT_SIDE: Vect3 = FRAME_X_RADIUS * LEFT
  48. RIGHT_SIDE: Vect3 = FRAME_X_RADIUS * RIGHT
  49. PI: float = np.pi
  50. TAU: float = 2 * PI
  51. DEGREES: float = TAU / 360
  52. # Nice to have a constant for readability
  53. # when juxtaposed with expressions like 30 * DEGREES
  54. RADIANS: float = 1
  55. FFMPEG_BIN: str = "ffmpeg"
  56. JOINT_TYPE_MAP: dict = {
  57. "no_joint": 0,
  58. "auto": 1,
  59. "bevel": 2,
  60. "miter": 3,
  61. }
  62. # Related to Text
  63. NORMAL: str = "NORMAL"
  64. ITALIC: str = "ITALIC"
  65. OBLIQUE: str = "OBLIQUE"
  66. BOLD: str = "BOLD"
  67. DEFAULT_STROKE_WIDTH: float = 4
  68. # For keyboard interactions
  69. CTRL_SYMBOL: int = 65508
  70. SHIFT_SYMBOL: int = 65505
  71. COMMAND_SYMBOL: int = 65517
  72. DELETE_SYMBOL: int = 65288
  73. ARROW_SYMBOLS: list[int] = list(range(65361, 65365))
  74. SHIFT_MODIFIER: int = 1
  75. CTRL_MODIFIER: int = 2
  76. COMMAND_MODIFIER: int = 64
  77. # Colors
  78. BLUE_E: ManimColor = "#1C758A"
  79. BLUE_D: ManimColor = "#29ABCA"
  80. BLUE_C: ManimColor = "#58C4DD"
  81. BLUE_B: ManimColor = "#9CDCEB"
  82. BLUE_A: ManimColor = "#C7E9F1"
  83. TEAL_E: ManimColor = "#49A88F"
  84. TEAL_D: ManimColor = "#55C1A7"
  85. TEAL_C: ManimColor = "#5CD0B3"
  86. TEAL_B: ManimColor = "#76DDC0"
  87. TEAL_A: ManimColor = "#ACEAD7"
  88. GREEN_E: ManimColor = "#699C52"
  89. GREEN_D: ManimColor = "#77B05D"
  90. GREEN_C: ManimColor = "#83C167"
  91. GREEN_B: ManimColor = "#A6CF8C"
  92. GREEN_A: ManimColor = "#C9E2AE"
  93. YELLOW_E: ManimColor = "#E8C11C"
  94. YELLOW_D: ManimColor = "#F4D345"
  95. YELLOW_C: ManimColor = "#FFFF00"
  96. YELLOW_B: ManimColor = "#FFEA94"
  97. YELLOW_A: ManimColor = "#FFF1B6"
  98. GOLD_E: ManimColor = "#C78D46"
  99. GOLD_D: ManimColor = "#E1A158"
  100. GOLD_C: ManimColor = "#F0AC5F"
  101. GOLD_B: ManimColor = "#F9B775"
  102. GOLD_A: ManimColor = "#F7C797"
  103. RED_E: ManimColor = "#CF5044"
  104. RED_D: ManimColor = "#E65A4C"
  105. RED_C: ManimColor = "#FC6255"
  106. RED_B: ManimColor = "#FF8080"
  107. RED_A: ManimColor = "#F7A1A3"
  108. MAROON_E: ManimColor = "#94424F"
  109. MAROON_D: ManimColor = "#A24D61"
  110. MAROON_C: ManimColor = "#C55F73"
  111. MAROON_B: ManimColor = "#EC92AB"
  112. MAROON_A: ManimColor = "#ECABC1"
  113. PURPLE_E: ManimColor = "#644172"
  114. PURPLE_D: ManimColor = "#715582"
  115. PURPLE_C: ManimColor = "#9A72AC"
  116. PURPLE_B: ManimColor = "#B189C6"
  117. PURPLE_A: ManimColor = "#CAA3E8"
  118. GREY_E: ManimColor = "#222222"
  119. GREY_D: ManimColor = "#444444"
  120. GREY_C: ManimColor = "#888888"
  121. GREY_B: ManimColor = "#BBBBBB"
  122. GREY_A: ManimColor = "#DDDDDD"
  123. WHITE: ManimColor = "#FFFFFF"
  124. BLACK: ManimColor = "#000000"
  125. GREY_BROWN: ManimColor = "#736357"
  126. DARK_BROWN: ManimColor = "#8B4513"
  127. LIGHT_BROWN: ManimColor = "#CD853F"
  128. PINK: ManimColor = "#D147BD"
  129. LIGHT_PINK: ManimColor = "#DC75CD"
  130. GREEN_SCREEN: ManimColor = "#00FF00"
  131. ORANGE: ManimColor = "#FF862F"
  132. MANIM_COLORS: List[ManimColor] = [
  133. BLACK, GREY_E, GREY_D, GREY_C, GREY_B, GREY_A, WHITE,
  134. BLUE_E, BLUE_D, BLUE_C, BLUE_B, BLUE_A,
  135. TEAL_E, TEAL_D, TEAL_C, TEAL_B, TEAL_A,
  136. GREEN_E, GREEN_D, GREEN_C, GREEN_B, GREEN_A,
  137. YELLOW_E, YELLOW_D, YELLOW_C, YELLOW_B, YELLOW_A,
  138. GOLD_E, GOLD_D, GOLD_C, GOLD_B, GOLD_A,
  139. RED_E, RED_D, RED_C, RED_B, RED_A,
  140. MAROON_E, MAROON_D, MAROON_C, MAROON_B, MAROON_A,
  141. PURPLE_E, PURPLE_D, PURPLE_C, PURPLE_B, PURPLE_A,
  142. GREY_BROWN, DARK_BROWN, LIGHT_BROWN,
  143. PINK, LIGHT_PINK,
  144. ]
  145. # Abbreviated names for the "median" colors
  146. BLUE: ManimColor = BLUE_C
  147. TEAL: ManimColor = TEAL_C
  148. GREEN: ManimColor = GREEN_C
  149. YELLOW: ManimColor = YELLOW_C
  150. GOLD: ManimColor = GOLD_C
  151. RED: ManimColor = RED_C
  152. MAROON: ManimColor = MAROON_C
  153. PURPLE: ManimColor = PURPLE_C
  154. GREY: ManimColor = GREY_C
  155. COLORMAP_3B1B: List[ManimColor] = [BLUE_E, GREEN, YELLOW, RED]