Geometry

TipableVMobject

class manimlib.mobject.geometry.TipableVMobject(**kwargs)

可以带箭头的物体(实现了和箭头tip有关的方法)

  • tip_length : 默认的箭头长度(默认为0.35)

  • tip_style : 默认的箭头样式(默认有填充无线条)

add_tip(tip_length=None, at_start=False)

添加箭头

  • tip_length : 强制箭头长度(不填则为默认长度)

  • at_start : True时在开头添加箭头,反之在结尾(默认为False在末尾)

create_tip(tip_length=None, at_start=False)

返回箭头,参数同 add_tip

get_tip()

返回第一个tip,如果没有则抛出异常

get_tips()

返回一个包含首尾tips的VGroup,没有则为空

get_unpositioned_tip(tip_length=None)

返回没有定位的箭头,参数只有 tip_length

pop_tips()

删除并返回 tips

Arc

class manimlib.mobject.geometry.Arc(start_angle=0, angle=1.5707963267948966, **kwargs)

圆弧

传入 start_angle 表示起始的角度, angle 表示圆心角

  • radius : 圆弧半径

  • num_components : 数越大越精细

  • arc_center : 圆弧的中心

get_arc_center()

获取圆弧圆心

move_arc_center_to(point)

将圆弧圆心移动到 point 的位置

ArcBetweenPoints

class manimlib.mobject.geometry.ArcBetweenPoints(start, end, angle=1.5707963267948966, **kwargs)

在两点之间的圆弧

传入 start, end 表示起点终点,angle 表示圆心角

其余关键字参数同 Arc

CurvedArrow

class manimlib.mobject.geometry.CurvedArrow(start_point, end_point, **kwargs)

弯曲的单向箭头

start_pointend_point 的弯曲箭头,圆心角为90°

其余关键字参数同 Arc

CurvedDoubleArrow

class manimlib.mobject.geometry.CurvedDoubleArrow(start_point, end_point, **kwargs)

弯曲的双向箭头

start_pointend_point 的弯曲双向箭头,圆心角为90°

其余关键字参数同 Arc

Circle

class manimlib.mobject.geometry.Circle(**kwargs)

参数同 Arc ,半径使用 radius (来自 Arc )

point_at_angle(angle)

返回圆上距离起点(默认在x轴)角度为 angle 的点

surround(mobject, dim_to_match=0, stretch=False, buffer_factor=1.2)

让圆环绕住物体(dim_to_match和stretch无效,始终为圆)

Dot

class manimlib.mobject.geometry.Dot(point=array([0.0, 0.0, 0.0]), **kwargs)

点(半径默认为0.08)

传入参数 point 表示点的位置,其余同 Arc

SmallDot

class manimlib.mobject.geometry.SmallDot(point=array([0.0, 0.0, 0.0]), **kwargs)

小点(半径默认为0.04)

传入参数 point 表示点的位置,其余同 Arc

Ellipse

class manimlib.mobject.geometry.Ellipse(**kwargs)

椭圆

宽度为 width,高度为 height

AnnularSector

class manimlib.mobject.geometry.AnnularSector(start_angle=0, angle=1.5707963267948966, **kwargs)

扇环

  • inner_radius : 内圆半径

  • outer_radius : 外圆半径

  • 其余同 Arc

传入 start_angle 表示起始的角度, angle 表示圆心角

  • radius : 圆弧半径

  • num_components : 数越大越精细

  • arc_center : 圆弧的中心

Sector

class manimlib.mobject.geometry.Sector(start_angle=0, angle=1.5707963267948966, **kwargs)

扇形

即内圆半径为0的扇环

传入 start_angle 表示起始的角度, angle 表示圆心角

  • radius : 圆弧半径

  • num_components : 数越大越精细

  • arc_center : 圆弧的中心

Annulus

class manimlib.mobject.geometry.Annulus(**kwargs)

圆环

  • inner_radius : 内圆半径

  • outer_radius : 外圆半径

  • 其余同 CircleArc

参数同 Arc ,半径使用 radius (来自 Arc )

Line

class manimlib.mobject.geometry.Line(start=array([- 1.0, 0.0, 0.0]), end=array([1.0, 0.0, 0.0]), **kwargs)

直线

传入 start, end 为线段起点终点

  • buff : 为两端距离 start,end 的距离(默认为0)

  • path_arc : 如果有此关键字参数,则使用 ArcBetweemPointspath_arc 表示角度

get_angle()

获取直线倾斜角

get_slope()

获取直线斜率

get_unit_vector()

获取直线方向上的单位向量

get_vector()

获取直线的方向向量

put_start_and_end_on(start, end)

把直线的首尾放在 start, end

set_angle(angle)

设置直线倾斜角为 angle

set_length(length)

缩放到 length 长度

set_opacity(opacity, family=True)

设置 fillstrokebackground_stroke 的不透明度

set_path_arc(new_value)

设置 path_arc

DashedLine

class manimlib.mobject.geometry.DashedLine(*args, **kwargs)

虚线

使用 DashedVMobject

  • dash_length : 每段虚线的长度,默认为0.05

TangentLine

class manimlib.mobject.geometry.TangentLine(vmob, alpha, **kwargs)

切线

传入 vmob 表示需要做切线的物体,alpha 表示切点在 vmob 上的比例

  • length : 切线长度

  • d_alpha : 精细程度,越小越精细(默认1e-6)

Elbow

class manimlib.mobject.geometry.Elbow(**kwargs)

折线(一般用作直角符号)

width 表示宽度,angle 表示角度

Arrow

class manimlib.mobject.geometry.Arrow(*args, **kwargs)

箭头

Line 相同,箭头大小自动

  • buff : 默认为0.25

  • max_tip_length_to_length_ratio : 箭头长度和直线长度最大比例(默认0.25)

  • max_stroke_width_to_length_ratio : 线条粗细和直线长度最大比例(默认5)

scale(factor, **kwargs)

缩放箭头,自动调节箭头大小和线条宽度

Vector

class manimlib.mobject.geometry.Vector(direction=array([1.0, 0.0, 0.0]), **kwargs)

向量

即起点为ORIGIN的箭头,终点为 direction

  • buff 默认设为了0

DoubleArrow

class manimlib.mobject.geometry.DoubleArrow(*args, **kwargs)

双向直箭头

参数和 Arrow 一致

CubicBezier

class manimlib.mobject.geometry.CubicBezier(points, **kwargs)

三阶贝塞尔曲线

传入 points 表示构成贝塞尔曲线的点集

Polygon

class manimlib.mobject.geometry.Polygon(*vertices, **kwargs)

多边形

传入多个 vertices (点坐标)表示顶点

get_vertices()

获取所有顶点

round_corners(radius=0.5)

形成圆角(圆角半径为 radius

RegularPolygon

class manimlib.mobject.geometry.RegularPolygon(n=6, **kwargs)

正多边形

传入数字 n 表示边数

Triangle

class manimlib.mobject.geometry.Triangle(**kwargs)

正三角形

使用 RegularPolygon

ArrowTip

class manimlib.mobject.geometry.ArrowTip(**kwargs)

箭头标志

即一个小正三角形

Rectangle

class manimlib.mobject.geometry.Rectangle(**kwargs)

矩形

使用 Polygon

  • height : 矩形高度

  • width : 矩形宽度

Square

class manimlib.mobject.geometry.Square(**kwargs)

正方形

side_length 是正方形边长

RoundedRectangle

class manimlib.mobject.geometry.RoundedRectangle(**kwargs)

圆角矩形

调用了 round_cornersRectangle

  • corner_radius 为圆角半径