2022-12-15 15:24:08 -08:00
|
|
|
from __future__ import annotations
|
2015-06-19 08:31:02 -07:00
|
|
|
import numpy as np
|
2015-03-22 13:33:02 -06:00
|
|
|
|
2022-12-15 09:18:41 -08:00
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
2022-12-15 09:56:08 -08:00
|
|
|
from typing import List
|
2022-12-16 20:35:26 -08:00
|
|
|
from manimlib.typing import ManimColor, Vect3
|
2022-12-15 11:33:53 -08:00
|
|
|
|
2022-04-12 19:19:59 +08:00
|
|
|
|
2021-01-02 20:47:51 -08:00
|
|
|
# Sizes relevant to default camera frame
|
2022-12-15 09:56:08 -08:00
|
|
|
ASPECT_RATIO: float = 16.0 / 9.0
|
|
|
|
FRAME_HEIGHT: float = 8.0
|
|
|
|
FRAME_WIDTH: float = FRAME_HEIGHT * ASPECT_RATIO
|
2023-01-30 11:57:01 -08:00
|
|
|
FRAME_SHAPE: tuple[float, float] = (FRAME_WIDTH, FRAME_HEIGHT)
|
2022-12-15 09:56:08 -08:00
|
|
|
FRAME_Y_RADIUS: float = FRAME_HEIGHT / 2
|
|
|
|
FRAME_X_RADIUS: float = FRAME_WIDTH / 2
|
2021-01-02 20:47:51 -08:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
DEFAULT_PIXEL_HEIGHT: int = 1080
|
|
|
|
DEFAULT_PIXEL_WIDTH: int = 1920
|
|
|
|
DEFAULT_FPS: int = 30
|
2021-01-02 22:38:07 -08:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
SMALL_BUFF: float = 0.1
|
|
|
|
MED_SMALL_BUFF: float = 0.25
|
|
|
|
MED_LARGE_BUFF: float = 0.5
|
|
|
|
LARGE_BUFF: float = 1
|
2021-01-02 20:47:51 -08:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
DEFAULT_MOBJECT_TO_EDGE_BUFFER: float = MED_LARGE_BUFF
|
|
|
|
DEFAULT_MOBJECT_TO_MOBJECT_BUFFER: float = MED_SMALL_BUFF
|
2018-03-30 18:19:23 -07:00
|
|
|
|
2019-07-01 12:51:48 -07:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
# In seconds
|
|
|
|
DEFAULT_WAIT_TIME: float = 1.0
|
2021-01-02 20:47:51 -08:00
|
|
|
|
2019-06-21 22:52:16 -07:00
|
|
|
|
2022-12-16 20:35:26 -08:00
|
|
|
ORIGIN: Vect3 = np.array([0., 0., 0.])
|
|
|
|
UP: Vect3 = np.array([0., 1., 0.])
|
|
|
|
DOWN: Vect3 = np.array([0., -1., 0.])
|
|
|
|
RIGHT: Vect3 = np.array([1., 0., 0.])
|
|
|
|
LEFT: Vect3 = np.array([-1., 0., 0.])
|
|
|
|
IN: Vect3 = np.array([0., 0., -1.])
|
|
|
|
OUT: Vect3 = np.array([0., 0., 1.])
|
|
|
|
X_AXIS: Vect3 = np.array([1., 0., 0.])
|
|
|
|
Y_AXIS: Vect3 = np.array([0., 1., 0.])
|
|
|
|
Z_AXIS: Vect3 = np.array([0., 0., 1.])
|
2019-06-21 22:52:16 -07:00
|
|
|
|
2022-12-17 19:48:27 -08:00
|
|
|
NULL_POINTS = np.array([[0., 0., 0.]])
|
|
|
|
|
2021-01-02 20:47:51 -08:00
|
|
|
# Useful abbreviations for diagonals
|
2022-12-16 20:35:26 -08:00
|
|
|
UL: Vect3 = UP + LEFT
|
|
|
|
UR: Vect3 = UP + RIGHT
|
|
|
|
DL: Vect3 = DOWN + LEFT
|
|
|
|
DR: Vect3 = DOWN + RIGHT
|
2022-12-15 09:56:08 -08:00
|
|
|
|
2022-12-16 20:35:26 -08:00
|
|
|
TOP: Vect3 = FRAME_Y_RADIUS * UP
|
|
|
|
BOTTOM: Vect3 = FRAME_Y_RADIUS * DOWN
|
|
|
|
LEFT_SIDE: Vect3 = FRAME_X_RADIUS * LEFT
|
|
|
|
RIGHT_SIDE: Vect3 = FRAME_X_RADIUS * RIGHT
|
2022-12-15 09:56:08 -08:00
|
|
|
|
|
|
|
PI: float = np.pi
|
|
|
|
TAU: float = 2 * PI
|
|
|
|
DEGREES: float = TAU / 360
|
2021-03-31 23:26:35 -07:00
|
|
|
# Nice to have a constant for readability
|
|
|
|
# when juxtaposed with expressions like 30 * DEGREES
|
2022-12-15 09:56:08 -08:00
|
|
|
RADIANS: float = 1
|
2018-12-22 14:27:22 -08:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
FFMPEG_BIN: str = "ffmpeg"
|
2020-02-18 22:33:58 -08:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
JOINT_TYPE_MAP: dict = {
|
2023-01-10 11:06:41 -08:00
|
|
|
"no_joint": 0,
|
|
|
|
"auto": 1,
|
2021-01-10 14:10:31 -08:00
|
|
|
"bevel": 2,
|
|
|
|
"miter": 3,
|
|
|
|
}
|
|
|
|
|
2021-01-02 20:47:51 -08:00
|
|
|
# Related to Text
|
2022-12-15 09:56:08 -08:00
|
|
|
NORMAL: str = "NORMAL"
|
|
|
|
ITALIC: str = "ITALIC"
|
|
|
|
OBLIQUE: str = "OBLIQUE"
|
|
|
|
BOLD: str = "BOLD"
|
2019-07-01 12:51:48 -07:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
DEFAULT_STROKE_WIDTH: float = 4
|
2015-10-10 18:48:25 -07:00
|
|
|
|
2022-04-20 21:50:37 -07:00
|
|
|
# For keyboard interactions
|
2022-12-15 09:56:08 -08:00
|
|
|
CTRL_SYMBOL: int = 65508
|
|
|
|
SHIFT_SYMBOL: int = 65505
|
|
|
|
COMMAND_SYMBOL: int = 65517
|
|
|
|
DELETE_SYMBOL: int = 65288
|
2022-12-15 11:33:53 -08:00
|
|
|
ARROW_SYMBOLS: list[int] = list(range(65361, 65365))
|
2022-04-20 21:50:37 -07:00
|
|
|
|
2022-12-15 09:56:08 -08:00
|
|
|
SHIFT_MODIFIER: int = 1
|
|
|
|
CTRL_MODIFIER: int = 2
|
|
|
|
COMMAND_MODIFIER: int = 64
|
2022-04-20 21:50:37 -07:00
|
|
|
|
2018-04-06 13:58:59 -07:00
|
|
|
# Colors
|
2022-12-14 10:55:32 -08:00
|
|
|
|
2022-12-15 15:24:08 -08:00
|
|
|
BLUE_E: ManimColor = "#1C758A"
|
|
|
|
BLUE_D: ManimColor = "#29ABCA"
|
|
|
|
BLUE_C: ManimColor = "#58C4DD"
|
|
|
|
BLUE_B: ManimColor = "#9CDCEB"
|
|
|
|
BLUE_A: ManimColor = "#C7E9F1"
|
|
|
|
TEAL_E: ManimColor = "#49A88F"
|
|
|
|
TEAL_D: ManimColor = "#55C1A7"
|
|
|
|
TEAL_C: ManimColor = "#5CD0B3"
|
|
|
|
TEAL_B: ManimColor = "#76DDC0"
|
|
|
|
TEAL_A: ManimColor = "#ACEAD7"
|
|
|
|
GREEN_E: ManimColor = "#699C52"
|
|
|
|
GREEN_D: ManimColor = "#77B05D"
|
|
|
|
GREEN_C: ManimColor = "#83C167"
|
|
|
|
GREEN_B: ManimColor = "#A6CF8C"
|
|
|
|
GREEN_A: ManimColor = "#C9E2AE"
|
|
|
|
YELLOW_E: ManimColor = "#E8C11C"
|
|
|
|
YELLOW_D: ManimColor = "#F4D345"
|
|
|
|
YELLOW_C: ManimColor = "#FFFF00"
|
|
|
|
YELLOW_B: ManimColor = "#FFEA94"
|
|
|
|
YELLOW_A: ManimColor = "#FFF1B6"
|
|
|
|
GOLD_E: ManimColor = "#C78D46"
|
|
|
|
GOLD_D: ManimColor = "#E1A158"
|
|
|
|
GOLD_C: ManimColor = "#F0AC5F"
|
|
|
|
GOLD_B: ManimColor = "#F9B775"
|
|
|
|
GOLD_A: ManimColor = "#F7C797"
|
|
|
|
RED_E: ManimColor = "#CF5044"
|
|
|
|
RED_D: ManimColor = "#E65A4C"
|
|
|
|
RED_C: ManimColor = "#FC6255"
|
|
|
|
RED_B: ManimColor = "#FF8080"
|
|
|
|
RED_A: ManimColor = "#F7A1A3"
|
|
|
|
MAROON_E: ManimColor = "#94424F"
|
|
|
|
MAROON_D: ManimColor = "#A24D61"
|
|
|
|
MAROON_C: ManimColor = "#C55F73"
|
|
|
|
MAROON_B: ManimColor = "#EC92AB"
|
|
|
|
MAROON_A: ManimColor = "#ECABC1"
|
|
|
|
PURPLE_E: ManimColor = "#644172"
|
|
|
|
PURPLE_D: ManimColor = "#715582"
|
|
|
|
PURPLE_C: ManimColor = "#9A72AC"
|
|
|
|
PURPLE_B: ManimColor = "#B189C6"
|
|
|
|
PURPLE_A: ManimColor = "#CAA3E8"
|
|
|
|
GREY_E: ManimColor = "#222222"
|
|
|
|
GREY_D: ManimColor = "#444444"
|
|
|
|
GREY_C: ManimColor = "#888888"
|
|
|
|
GREY_B: ManimColor = "#BBBBBB"
|
|
|
|
GREY_A: ManimColor = "#DDDDDD"
|
|
|
|
WHITE: ManimColor = "#FFFFFF"
|
|
|
|
BLACK: ManimColor = "#000000"
|
|
|
|
GREY_BROWN: ManimColor = "#736357"
|
|
|
|
DARK_BROWN: ManimColor = "#8B4513"
|
|
|
|
LIGHT_BROWN: ManimColor = "#CD853F"
|
|
|
|
PINK: ManimColor = "#D147BD"
|
|
|
|
LIGHT_PINK: ManimColor = "#DC75CD"
|
|
|
|
GREEN_SCREEN: ManimColor = "#00FF00"
|
|
|
|
ORANGE: ManimColor = "#FF862F"
|
|
|
|
|
|
|
|
MANIM_COLORS: List[ManimColor] = [
|
2022-04-20 21:50:44 -07:00
|
|
|
BLACK, GREY_E, GREY_D, GREY_C, GREY_B, GREY_A, WHITE,
|
|
|
|
BLUE_E, BLUE_D, BLUE_C, BLUE_B, BLUE_A,
|
|
|
|
TEAL_E, TEAL_D, TEAL_C, TEAL_B, TEAL_A,
|
|
|
|
GREEN_E, GREEN_D, GREEN_C, GREEN_B, GREEN_A,
|
|
|
|
YELLOW_E, YELLOW_D, YELLOW_C, YELLOW_B, YELLOW_A,
|
|
|
|
GOLD_E, GOLD_D, GOLD_C, GOLD_B, GOLD_A,
|
|
|
|
RED_E, RED_D, RED_C, RED_B, RED_A,
|
|
|
|
MAROON_E, MAROON_D, MAROON_C, MAROON_B, MAROON_A,
|
|
|
|
PURPLE_E, PURPLE_D, PURPLE_C, PURPLE_B, PURPLE_A,
|
|
|
|
GREY_BROWN, DARK_BROWN, LIGHT_BROWN,
|
|
|
|
PINK, LIGHT_PINK,
|
|
|
|
]
|
|
|
|
|
2021-02-11 12:21:06 -08:00
|
|
|
# Abbreviated names for the "median" colors
|
2022-12-15 15:24:08 -08:00
|
|
|
BLUE: ManimColor = BLUE_C
|
|
|
|
TEAL: ManimColor = TEAL_C
|
|
|
|
GREEN: ManimColor = GREEN_C
|
|
|
|
YELLOW: ManimColor = YELLOW_C
|
|
|
|
GOLD: ManimColor = GOLD_C
|
|
|
|
RED: ManimColor = RED_C
|
|
|
|
MAROON: ManimColor = MAROON_C
|
|
|
|
PURPLE: ManimColor = PURPLE_C
|
|
|
|
GREY: ManimColor = GREY_C
|
|
|
|
|
|
|
|
COLORMAP_3B1B: List[ManimColor] = [BLUE_E, GREEN, YELLOW, RED]
|