Surface

合格名称: manim.mobject.three\_d.three\_dimensions.Surface

class Surface(func, u_range=[0, 1], v_range=[0, 1], resolution=32, surface_piece_config={}, fill_color=ManimColor('#29ABCA'), fill_opacity=1.0, checkerboard_colors=[ManimColor('#29ABCA'), ManimColor('#236B8E')], stroke_color=ManimColor('#BBBBBB'), stroke_width=0.5, should_make_jagged=False, pre_function_handle_to_anchor_scale_factor=1e-05, **kwargs)[source]

基类: VGroup

使用棋盘格图案创建参数曲面。

参数:
  • func (可调用对象[[浮点数, 浮点数], np.ndarray]) – 定义 Surface 的函数。

  • u_range (序列[浮点数]) – u 变量的范围: (u_min, u_max)

  • v_range (序列[浮点数]) – v 变量的范围: (v_min, v_max)

  • resolution (序列[整数]) – Surface 的采样数量。可以使用元组分别为 uv 定义不同的分辨率。

  • fill_color (可解析Manim颜色) – Surface 的颜色。如果设置了 checkerboard_colors,则忽略此项。

  • fill_opacity (浮点数) – Surface 的不透明度,从0(完全透明)到1(完全不透明)。默认为1。

  • checkerboard_colors (序列[可解析Manim颜色] | 布尔值) – 用于交替着色各个面的颜色。会覆盖 fill_color

  • stroke_color (可解析Manim颜色) – Surface 每个面描边的颜色。

  • stroke_width (浮点数) – Surface 每个面描边的宽度。默认为0.5。

  • should_make_jagged (布尔值) – 将贝塞尔曲线的锚点模式从平滑更改为锯齿状。默认为 False

  • surface_piece_config (字典)

  • pre_function_handle_to_anchor_scale_factor (浮点数)

  • kwargs (任意类型)

示例

示例: ParaSurface

../_images/ParaSurface-1.png
from manim import *

class ParaSurface(ThreeDScene):
    def func(self, u, v):
        return np.array([np.cos(u) * np.cos(v), np.cos(u) * np.sin(v), u])

    def construct(self):
        axes = ThreeDAxes(x_range=[-4,4], x_length=8)
        surface = Surface(
            lambda u, v: axes.c2p(*self.func(u, v)),
            u_range=[-PI, PI],
            v_range=[0, TAU],
            resolution=8,
        )
        self.set_camera_orientation(theta=70 * DEGREES, phi=75 * DEGREES)
        self.add(axes, surface)
class ParaSurface(ThreeDScene):
    def func(self, u, v):
        return np.array([np.cos(u) * np.cos(v), np.cos(u) * np.sin(v), u])

    def construct(self):
        axes = ThreeDAxes(x_range=[-4,4], x_length=8)
        surface = Surface(
            lambda u, v: axes.c2p(*self.func(u, v)),
            u_range=[-PI, PI],
            v_range=[0, TAU],
            resolution=8,
        )
        self.set_camera_orientation(theta=70 * DEGREES, phi=75 * DEGREES)
        self.add(axes, surface)

方法

func

set_fill_by_checkerboard

以交替模式设置 Surface 每个面的 fill_color。

set_fill_by_value

根据参数曲面每个对象的轴值设置其颜色。

属性

animate (动画)

用于动画化 self 的任何方法的应用。

animation_overrides (动画覆盖)

颜色

depth (深度)

mobject 的深度。

fill_color (填充颜色)

如果存在多种颜色(用于渐变),则返回第一种颜色

height (高度)

mobject 的高度。

n_points_per_curve (每条曲线的点数)

sheen_factor (光泽因子)

stroke_color (描边颜色)

width (宽度)

mobject 的宽度。

_original__init__(func, u_range=[0, 1], v_range=[0, 1], resolution=32, surface_piece_config={}, fill_color=ManimColor('#29ABCA'), fill_opacity=1.0, checkerboard_colors=[ManimColor('#29ABCA'), ManimColor('#236B8E')], stroke_color=ManimColor('#BBBBBB'), stroke_width=0.5, should_make_jagged=False, pre_function_handle_to_anchor_scale_factor=1e-05, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

参数:
  • func (可调用对象[[浮点数, 浮点数], ndarray])

  • u_range (序列[浮点数])

  • v_range (序列[浮点数])

  • resolution (序列[整数])

  • surface_piece_config (字典)

  • fill_color (可解析Manim颜色)

  • fill_opacity (浮点数)

  • checkerboard_colors (序列[可解析Manim颜色] | 布尔值)

  • 描边颜色 (可解析Manim颜色)

  • stroke_width (浮点数)

  • should_make_jagged (布尔值)

  • pre_function_handle_to_anchor_scale_factor (浮点数)

  • kwargs (任意类型)

返回类型:

set_fill_by_checkerboard(*colors, opacity=None)[source]

以交替模式设置 Surface 每个面的 fill_color。

参数:
  • colors (可迭代对象[可解析Manim颜色]) – 用于交替模式的颜色列表。

  • opacity (浮点数 | ) – Surface 的 fill_opacity,从0(完全透明)到1(完全不透明)。

返回:

具有交替图案的参数曲面。

返回类型:

Surface

set_fill_by_value(axes, colorscale=None, axis=2, **kwargs)[source]

根据参数曲面每个对象的轴值设置其颜色。

参数:
  • axes (Mobject) – 参数曲面的坐标轴,将用于将轴值映射到颜色。

  • colorscale (列表[可解析Manim颜色] | 可解析Manim颜色 | ) – 一个颜色列表,按从低轴值到高轴值的顺序排列。如果传递包含颜色和数字对的元组列表,则这些数字将用作枢轴。

  • axis (整数) – 用于颜色映射的所选轴。(0 = x, 1 = y, 2 = z)

返回:

具有按值应用的渐变的参数曲面。用于链式调用。

返回类型:

Surface

示例

示例: FillByValueExample

../_images/FillByValueExample-1.png
from manim import *

class FillByValueExample(ThreeDScene):
    def construct(self):
        resolution_fa = 8
        self.set_camera_orientation(phi=75 * DEGREES, theta=-160 * DEGREES)
        axes = ThreeDAxes(x_range=(0, 5, 1), y_range=(0, 5, 1), z_range=(-1, 1, 0.5))
        def param_surface(u, v):
            x = u
            y = v
            z = np.sin(x) * np.cos(y)
            return z
        surface_plane = Surface(
            lambda u, v: axes.c2p(u, v, param_surface(u, v)),
            resolution=(resolution_fa, resolution_fa),
            v_range=[0, 5],
            u_range=[0, 5],
            )
        surface_plane.set_style(fill_opacity=1)
        surface_plane.set_fill_by_value(axes=axes, colorscale=[(RED, -0.5), (YELLOW, 0), (GREEN, 0.5)], axis=2)
        self.add(axes, surface_plane)
class FillByValueExample(ThreeDScene):
    def construct(self):
        resolution_fa = 8
        self.set_camera_orientation(phi=75 * DEGREES, theta=-160 * DEGREES)
        axes = ThreeDAxes(x_range=(0, 5, 1), y_range=(0, 5, 1), z_range=(-1, 1, 0.5))
        def param_surface(u, v):
            x = u
            y = v
            z = np.sin(x) * np.cos(y)
            return z
        surface_plane = Surface(
            lambda u, v: axes.c2p(u, v, param_surface(u, v)),
            resolution=(resolution_fa, resolution_fa),
            v_range=[0, 5],
            u_range=[0, 5],
            )
        surface_plane.set_style(fill_opacity=1)
        surface_plane.set_fill_by_value(axes=axes, colorscale=[(RED, -0.5), (YELLOW, 0), (GREEN, 0.5)], axis=2)
        self.add(axes, surface_plane)