Geometry¶
TipableVMobject¶
- class manimlib.mobject.geometry.TipableVMobject(**kwargs)¶
可以带箭头的物体(实现了和箭头 tip 有关的方法)
tip_config
字典中传入与箭头相关的参数,最终会将这个字典中的参数传入ArrowTip
类来生成箭头。 这一部分将在ArrowTip
中详细阐述。
初始化样式,VMobject 的样式有以下
fill
填充样式颜色:
fill_color
或color
不透明度:
fill_opacity
stroke
线条样式颜色:
stroke_color
或color
宽度:
stroke_width
不透明度:
stroke_opacity
gloss
光泽shadow
阴影reflectiveness
反光度
其中, color, opacity, width 属性均可以为一个列表,在渲染时会按照列表对其进行补间
- add_tip(at_start: bool = False, **kwargs)¶
添加箭头
at_start
:True
时在开头添加箭头,反之在结尾(默认为False
在末尾)**kwargs
中可以加入tip_config
的参数
- get_end() ndarray ¶
获取物件结束点
- get_length() float ¶
获取起止点之间的直线距离
- get_start() ndarray ¶
获取物件起始点
Arc¶
- class manimlib.mobject.geometry.Arc(start_angle: float = 0, angle: float = 1.5707963267948966, **kwargs)¶
圆弧
传入
start_angle
表示起始的角度,angle
表示圆心角radius
: 圆弧半径num_components
: 数越大越精细arc_center
: 圆弧的中心
- get_arc_center() ndarray ¶
获取圆弧圆心
- get_start_angle() float ¶
获取起始角度
- get_stop_angle() float ¶
获取终止角度
- move_arc_center_to(point: ndarray)¶
将圆弧圆心移动到
point
的位置
ArcBetweenPoints¶
- class manimlib.mobject.geometry.ArcBetweenPoints(start: ndarray, end: ndarray, angle: float = 1.5707963267948966, **kwargs)¶
两点之间的圆弧
传入
start
,end
表示起点终点,angle
表示圆心角其余关键字参数同 Arc
CurvedArrow¶
- class manimlib.mobject.geometry.CurvedArrow(start_point: ndarray, end_point: ndarray, **kwargs)¶
弯曲的单向箭头
从
start_point
到end_point
的弯曲箭头,圆心角为90°其余关键字参数同
Arc
CurvedDoubleArrow¶
- class manimlib.mobject.geometry.CurvedDoubleArrow(start_point: ndarray, end_point: ndarray, **kwargs)¶
弯曲的双向箭头
从
start_point
到end_point
的弯曲双向箭头,圆心角为90°其余关键字参数同
Arc
Circle¶
Dot¶
- class manimlib.mobject.geometry.Dot(point: ndarray = array([0., 0., 0.]), **kwargs)¶
点(半径默认为0.08)
传入参数
point
表示点的位置,其余同Arc
SmallDot¶
- class manimlib.mobject.geometry.SmallDot(point: ndarray = array([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: float = 0, angle: float = 1.5707963267948966, **kwargs)¶
扇环
inner_radius
: 内圆半径outer_radius
: 外圆半径其余同
Arc
传入
start_angle
表示起始的角度,angle
表示圆心角radius
: 圆弧半径num_components
: 数越大越精细arc_center
: 圆弧的中心
Sector¶
- class manimlib.mobject.geometry.Sector(start_angle: float = 0, angle: float = 1.5707963267948966, **kwargs)¶
扇形
即内圆半径为 0 的扇环
传入
start_angle
表示起始的角度,angle
表示圆心角radius
: 圆弧半径num_components
: 数越大越精细arc_center
: 圆弧的中心
Annulus¶
- class manimlib.mobject.geometry.Annulus(start_angle: float = 0, **kwargs)¶
圆环
inner_radius
: 内圆半径outer_radius
: 外圆半径其余同
Circle
(Arc
)
参数同
Arc
,半径使用radius
(来自Arc
)
Line¶
- class manimlib.mobject.geometry.Line(start: ndarray = array([-1., 0., 0.]), end: ndarray = array([1., 0., 0.]), **kwargs)¶
直线
传入
start, end
为线段起点终点buff
: 为两端距离start,end
的距离(默认为0)path_arc
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
- get_angle() float ¶
获取直线倾斜角
- get_projection(point: ndarray) ndarray ¶
返回点在直线上的投影
- get_slope() float ¶
获取直线斜率
- get_unit_vector() ndarray ¶
获取直线方向上的单位向量
- get_vector() ndarray ¶
获取直线的方向向量
- pointify(mob_or_point: Mobject | ndarray, direction: ndarray | None = None) ndarray ¶
将一个参数传递给 Line (或子类) 并将其转换为一个 3D 点。
- put_start_and_end_on(start: ndarray, end: ndarray)¶
把直线的首尾放在
start, end
上
- set_angle(angle: float, about_point: ndarray | None = None)¶
设置直线倾斜角为
angle
- set_length(length: float, **kwargs)¶
缩放到
length
长度
- set_path_arc(new_value: float) None ¶
设置
path_arc
DashedLine¶
TangentLine¶
Elbow¶
- class manimlib.mobject.geometry.Elbow(**kwargs)¶
折线(一般用作直角符号)
width
表示宽度,angle
表示角度
Arrow¶
- class manimlib.mobject.geometry.Arrow(start: ndarray = array([-1., 0., 0.]), end: ndarray = array([1., 0., 0.]), **kwargs)¶
带箭头的直线,箭头大小自动
buff
: 默认为0.25max_tip_length_to_length_ratio
: 箭头长度和直线长度最大比例(默认0.25)max_stroke_width_to_length_ratio
: 线条粗细和直线长度最大比例(默认5)
该类在
manimgl
版本中进行了重构,使用add_tip
可能会导致箭头大小不统一(grant又把箭头重写了一遍)
传入
start, end
为线段起点终点buff
: 为两端距离start,end
的距离(默认为0)path_arc
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
- reset_tip()¶
重置箭头
- set_stroke(color: ManimColor | Iterable[ManimColor] | None = None, width: float | Iterable[float] | None = None, *args, **kwargs)¶
设置轮廓线(轮廓线浮于填充色上方)
FillArrow¶
- class manimlib.mobject.geometry.FillArrow(start: ndarray = array([-1., 0., 0.]), end: ndarray = array([1., 0., 0.]), **kwargs)¶
箭头,其本质是一个七边形
传入
start, end
为线段起点终点buff
: 为两端距离start,end
的距离(默认为0)path_arc
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
- get_end() ndarray ¶
获取物件结束点
- get_start() ndarray ¶
获取物件起始点
- put_start_and_end_on(start: ndarray, end: ndarray)¶
把直线的首尾放在
start, end
上
- scale(*args, **kwargs)¶
缩放箭头,自动调节箭头大小和线条宽度
- set_path_arc(path_arc: float)¶
设置
path_arc
Vector¶
- class manimlib.mobject.geometry.Vector(direction: ndarray = array([1., 0., 0.]), **kwargs)¶
向量
即起点为ORIGIN的箭头,终点为
direction
buff
默认设为了 0
DoubleArrow¶
- class manimlib.mobject.geometry.DoubleArrow(*args, **kwargs)¶
双向直箭头
参数和
Arrow
一致
CubicBezier¶
- class manimlib.mobject.geometry.CubicBezier(a0: ndarray, h0: ndarray, h1: ndarray, a1: ndarray, **kwargs)¶
三阶贝塞尔曲线
测试中发现这个三阶贝塞尔曲线不准
传入
points
表示构成贝塞尔曲线的点集
Polygon¶
RegularPolygon¶
- class manimlib.mobject.geometry.RegularPolygon(n: int = 6, **kwargs)¶
正多边形
传入数字
n
表示边数
Triangle¶
- class manimlib.mobject.geometry.Triangle(**kwargs)¶
正三角形
使用
RegularPolygon
ArrowTip¶
Rectangle¶
- class manimlib.mobject.geometry.Rectangle(width: float | None = None, height: float | None = None, **kwargs)¶
矩形
使用
Polygon
height
: 矩形高度width
: 矩形宽度
Square¶
- class manimlib.mobject.geometry.Square(side_length: float = 2.0, **kwargs)¶
正方形
side_length
是正方形边长
RoundedRectangle¶
- class manimlib.mobject.geometry.RoundedRectangle(**kwargs)¶
圆角矩形
调用了
round_corners
的Rectangle
corner_radius
为圆角半径