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
的参数
-
create_tip
(at_start: bool = False, **kwargs) → manimlib.mobject.geometry.ArrowTip¶ 返回箭头,参数同
add_tip
-
get_end
() → numpy.ndarray¶ 获取物件结束点
-
get_length
() → float¶ 获取起止点之间的直线距离
-
get_start
() → numpy.ndarray¶ 获取物件起始点
-
get_tip
() → manimlib.mobject.geometry.ArrowTip¶ 返回第一个 tip,如果没有则抛出异常
-
get_tips
() → manimlib.mobject.types.vectorized_mobject.VGroup¶ 返回一个包含首尾 tips 的
VGroup
,没有则为空
-
get_unpositioned_tip
(**kwargs) → manimlib.mobject.geometry.ArrowTip¶ 返回没有定位的箭头,参数只有
tip_config
-
pop_tips
() → manimlib.mobject.types.vectorized_mobject.VGroup¶ 删除并返回 tips
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
() → numpy.ndarray¶ 获取圆弧圆心
-
get_start_angle
() → float¶ 获取起始角度
-
get_stop_angle
() → float¶ 获取终止角度
-
move_arc_center_to
(point: numpy.ndarray)¶ 将圆弧圆心移动到
point
的位置
ArcBetweenPoints¶
-
class
manimlib.mobject.geometry.
ArcBetweenPoints
(start: numpy.ndarray, end: numpy.ndarray, angle: float = 1.5707963267948966, **kwargs)¶ 两点之间的圆弧
传入
start
,end
表示起点终点,angle
表示圆心角其余关键字参数同 Arc
CurvedArrow¶
-
class
manimlib.mobject.geometry.
CurvedArrow
(start_point: numpy.ndarray, end_point: numpy.ndarray, **kwargs)¶ 弯曲的单向箭头
从
start_point
到end_point
的弯曲箭头,圆心角为90°其余关键字参数同
Arc
CurvedDoubleArrow¶
-
class
manimlib.mobject.geometry.
CurvedDoubleArrow
(start_point: numpy.ndarray, end_point: numpy.ndarray, **kwargs)¶ 弯曲的双向箭头
从
start_point
到end_point
的弯曲双向箭头,圆心角为90°其余关键字参数同
Arc
Circle¶
-
class
manimlib.mobject.geometry.
Circle
(start_angle: float = 0, **kwargs)¶ 圆
参数同
Arc
,半径使用radius
(来自Arc
)-
get_radius
() → float¶ 获取圆的半径
-
point_at_angle
(angle: float) → numpy.ndarray¶ 返回圆上距离起点(默认在x轴)角度为
angle
的点
-
surround
(mobject: manimlib.mobject.mobject.Mobject, dim_to_match: int = 0, stretch: bool = False, buff: float = 0.25)¶ 让圆环绕住物体(dim_to_match和stretch无效,始终为圆)
-
Dot¶
-
class
manimlib.mobject.geometry.
Dot
(point: numpy.ndarray = array([0., 0., 0.]), **kwargs)¶ 点(半径默认为0.08)
传入参数
point
表示点的位置,其余同Arc
SmallDot¶
-
class
manimlib.mobject.geometry.
SmallDot
(point: numpy.ndarray = array([0., 0., 0.]), **kwargs)¶ 小点(半径默认为0.04)
传入参数
point
表示点的位置,其余同Arc
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: numpy.ndarray = array([- 1., 0., 0.]), end: numpy.ndarray = array([1., 0., 0.]), **kwargs)¶ 直线
传入
start, end
为线段起点终点buff
: 为两端距离start,end
的距离(默认为0)path_arc
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
-
get_angle
() → float¶ 获取直线倾斜角
-
get_projection
(point: numpy.ndarray) → numpy.ndarray¶ 返回点在直线上的投影
-
get_slope
() → float¶ 获取直线斜率
-
get_unit_vector
() → numpy.ndarray¶ 获取直线方向上的单位向量
-
get_vector
() → numpy.ndarray¶ 获取直线的方向向量
-
pointify
(mob_or_point: manimlib.mobject.mobject.Mobject | numpy.ndarray, direction: Optional[numpy.ndarray, None] = None) → numpy.ndarray¶ 将一个参数传递给 Line (或子类) 并将其转换为一个 3D 点。
-
put_start_and_end_on
(start: numpy.ndarray, end: numpy.ndarray)¶ 把直线的首尾放在
start, end
上
-
set_angle
(angle: float, about_point: Optional[numpy.ndarray, None] = None)¶ 设置直线倾斜角为
angle
-
set_length
(length: float, **kwargs)¶ 缩放到
length
长度
-
set_path_arc
(new_value: float) → None¶ 设置
path_arc
DashedLine¶
TangentLine¶
-
class
manimlib.mobject.geometry.
TangentLine
(vmob: manimlib.mobject.types.vectorized_mobject.VMobject, alpha: float, **kwargs)¶ 切线
传入
vmob
表示需要做切线的物体,alpha
表示切点在vmob
上的比例length
: 切线长度d_alpha
: 精细程度,越小越精细(默认1e-6)
Arrow¶
-
class
manimlib.mobject.geometry.
Arrow
(start: numpy.ndarray = array([- 1., 0., 0.]), end: numpy.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: numpy.ndarray = array([- 1., 0., 0.]), end: numpy.ndarray = array([1., 0., 0.]), **kwargs)¶ 箭头,其本质是一个七边形
传入
start, end
为线段起点终点buff
: 为两端距离start,end
的距离(默认为0)path_arc
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
-
get_end
() → numpy.ndarray¶ 获取物件结束点
-
get_start
() → numpy.ndarray¶ 获取物件起始点
-
put_start_and_end_on
(start: numpy.ndarray, end: numpy.ndarray)¶ 把直线的首尾放在
start, end
上
-
scale
(*args, **kwargs)¶ 缩放箭头,自动调节箭头大小和线条宽度
-
set_path_arc
(path_arc: float)¶ 设置
path_arc
Vector¶
-
class
manimlib.mobject.geometry.
Vector
(direction: numpy.ndarray = array([1., 0., 0.]), **kwargs)¶ 向量
即起点为ORIGIN的箭头,终点为
direction
buff
默认设为了 0
CubicBezier¶
-
class
manimlib.mobject.geometry.
CubicBezier
(a0: numpy.ndarray, h0: numpy.ndarray, h1: numpy.ndarray, a1: numpy.ndarray, **kwargs)¶ 三阶贝塞尔曲线
测试中发现这个三阶贝塞尔曲线不准
传入
points
表示构成贝塞尔曲线的点集
Polygon¶
RegularPolygon¶
-
class
manimlib.mobject.geometry.
RegularPolygon
(n: int = 6, **kwargs)¶ 正多边形
传入数字
n
表示边数
ArrowTip¶
Rectangle¶
-
class
manimlib.mobject.geometry.
Rectangle
(width: Optional[float, None] = None, height: Optional[float, None] = None, **kwargs)¶ 矩形
使用
Polygon
height
: 矩形高度width
: 矩形宽度