核心

Manim(内部)的颜色数据结构和一些颜色转换工具。

此模块包含 ManimColor 的实现,该数据结构在内部用于表示颜色。

使用这些颜色的首选方式是从 Manim 导入它们的常量

>>> from manim import RED, GREEN, BLUE
>>> print(RED)
#FC6255

请注意,此方式使用大写颜色名称。

注意

带有 _C 后缀的颜色具有一个别名,该别名等于不带字母的颜色名称。例如,GREEN = GREEN_C

自定义色彩空间

您好,尊敬的访客。您似乎有兴趣为我们目前不支持的色彩空间实现自定义颜色类。

当前系统使用了一些间接方法来确保与 Manim 中所有其他颜色类型的一致行为。

要实现自定义色彩空间,您必须继承 ManimColor 并实现三个重要方法

  • _internal_value:在 ManimColor 上实现的 @property,旨在保持一致的内部表示,该表示可供 ManimColor 中的其他函数引用。此属性充当您类中所需任何表示的代理。

    • getter 应该始终以 [r,g,b,a] 格式返回一个 NumPy 数组,与类型 ManimColorInternal 一致。

    • setter 应该始终接受 [r,g,b,a] 格式的值,该值可以转换为您需要的任何属性。

  • _internal_space:在 ManimColor 上实现的只读 @property,旨在提供可供运算符、插值和颜色转换函数使用的有用表示。

    此值的唯一约束是

    • 它必须是一个 NumPy 数组。

    • 最后一个值必须是介于 0.01.0 范围内的不透明度。

    此外,您的 __init__ 必须支持此格式作为初始化值,不带额外参数,以确保 ManimColor 中所有其他方法的正确功能。

  • _from_internal():一个 @classmethod,它将 [r,g,b,a] 值转换为适用于您的 __init__ 方法的参数,并调用 cls 参数。

类型别名

class ParsableManimColor
ManimColor | int | str | RGB_Tuple_Int | RGB_Tuple_Float | RGBA_Tuple_Int | RGBA_Tuple_Float | RGB_Array_Int | RGB_Array_Float | RGBA_Array_Int | RGBA_Array_Float

ParsableManimColor 表示所有在 Manim 中可被解析为 ManimColor 的类型。

类型变量

class ManimColorT
TypeVar('ManimColorT', bound=ManimColor)

HSV

HSV色彩空间

Manim颜色

颜色的内部表示。

RGBA

RGBA色彩空间

函数

average_color(*colors)[source]

确定给定参数之间的平均颜色。

注意

此操作不考虑颜色的 Alpha 值(不透明度)。生成的颜色具有 1.0 的 Alpha 值或不透明度。

返回:

输入颜色的平均值。

返回类型:

Manim颜色

参数:

colors (ParsableManimColor)

color_gradient(reference_colors, length_of_output)[source]

创建一组颜色列表,这些颜色在输入颜色数组之间以特定数量的颜色进行插值。

参数:
  • reference_colors (Sequence[ParsableManimColor]) – 要进行插值或分散的颜色。

  • length_of_output (int) – 输出应具有的颜色数量,理想情况下应多于输入。

返回:

一个 ManimColor 或插值 ManimColor 的列表。

返回类型:

list[ManimColor] | ManimColor

color_to_int_rgb(color)[source]

函数式编程的辅助函数。请参阅 ManimColor.to_int_rgb()

参数:

color (ParsableManimColor) – 要转换为 RGB 整数数组的颜色。

返回:

相应的 RGB 整数数组。

返回类型:

RGB_Array_Int

color_to_int_rgba(color, alpha=1.0)[source]

函数式编程的辅助函数。请参阅 ManimColor.to_int_rgba_with_alpha()

参数:
  • color (ParsableManimColor) – 要转换为 RGBA 整数数组的颜色。

  • alpha (float) – 一个介于 0.0 和 1.0 之间的 Alpha 值,用作颜色的不透明度。默认为 1.0。

返回:

相应的 RGBA 整数数组。

返回类型:

RGBA_Array_Int

color_to_rgb(color)[source]

函数式编程的辅助函数。请参阅 ManimColor.to_rgb()

参数:

color (ParsableManimColor) – 要转换为 RGB 浮点数组的颜色。

返回:

相应的 RGB 浮点数组。

返回类型:

RGB_Array_Float

color_to_rgba(color, alpha=1.0)[source]

函数式编程的辅助函数。请参阅 ManimColor.to_rgba_with_alpha()

参数:
  • color (ParsableManimColor) – 要转换为 RGBA 浮点数组的颜色。

  • alpha (float) – 一个介于 0.0 和 1.0 之间的 Alpha 值,用作颜色的不透明度。默认为 1.0。

返回:

相应的 RGBA 浮点数组。

返回类型:

RGBA_Array_Float

get_shaded_rgb(rgb, point, unit_normal_vect, light_source)[source]

根据表面是面向 light_source 还是背离 light_source,为位于给定空间 point 处且朝向 unit_normal_vect 方向的某个表面的 rgb 颜色添加光照或阴影。

参数:
  • rgb (RGB_Array_Float) – 浮点数的 RGB 数组。

  • point (Point3D) – 彩色表面的位置。

  • unit_normal_vect (Vector3D) – 彩色表面所面对的方向。

  • light_source (Point3D) – 可能照亮表面的光源位置。

返回:

根据彩色表面的方向,添加了光照或阴影的颜色。

返回类型:

RGB_Array_Float

hex_to_rgb(hex_code)[source]

函数式编程的辅助函数。请参阅 ManimColor.to_rgb()

参数:

hex_code (str) – 表示颜色的十六进制字符串。

返回:

表示该颜色的 RGB 数组。

返回类型:

RGB_Array_Float

interpolate_color(color1, color2, alpha)[source]

用于插值两个 ManimColor 并获取结果的独立函数。请参阅 ManimColor.interpolate()

参数:
返回:

插值后的 ManimColor。

返回类型:

Manim颜色

invert_color(color)[source]

函数式编程的辅助函数。请参阅 ManimColor.invert()

参数:

color (ManimColorT) – 要反转的 ManimColor

返回:

线性反转的 ManimColor

返回类型:

Manim颜色

random_bright_color()[source]

返回一个随机亮色:一个与 WHITE 平均后的随机颜色。

警告

此操作非常耗费资源。请注意性能损失。

返回:

一个随机亮色的 ManimColor

返回类型:

Manim颜色

random_color()[source]

返回一个随机的 ManimColor

警告

此操作非常耗费资源。请注意性能损失。

返回:

一个随机的 ManimColor

返回类型:

Manim颜色

rgb_to_color(rgb)[source]

函数式编程的辅助函数。请参阅 ManimColor.from_rgb()

参数:

rgb (RGB_Array_Float | RGB_Tuple_Float | RGB_Array_Int | RGB_Tuple_Int) – 一个包含 3 个元素的迭代器。

返回:

具有相应值的 ManimColor。

返回类型:

Manim颜色

rgb_to_hex(rgb)[source]

函数式编程的辅助函数。请参阅 ManimColor.from_rgb()ManimColor.to_hex()

参数:

rgb (RGB_Array_Float | RGB_Tuple_Float | RGB_Array_Int | RGB_Tuple_Int) – 一个包含 3 个元素的迭代器。

返回:

颜色的十六进制表示。

返回类型:

str

rgba_to_color(rgba)[source]

函数式编程的辅助函数。请参阅 ManimColor.from_rgba()

参数:

rgba (RGBA_Array_Float | RGBA_Tuple_Float | RGBA_Array_Int | RGBA_Tuple_Int) – 一个包含 4 个元素的迭代器。

返回:

具有相应值的 ManimColor

返回类型:

Manim颜色