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
阴影
其中,opacity, width 等属性均可以为一个列表,在渲染时会按照列表对其进行补间
-
add_tip
(at_start=False, **kwargs)¶ 添加箭头
at_start
:True
时在开头添加箭头,反之在结尾(默认为False
在末尾)**kwargs
中可以加入tip_config
的参数
-
create_tip
(at_start=False, **kwargs)¶ 返回箭头,参数同
add_tip
-
get_end
()¶ 获取终止点
-
get_start
()¶ 获取起始点
-
get_tip
()¶ 返回第一个 tip,如果没有则抛出异常
-
get_tips
()¶ 返回一个包含首尾 tips 的
VGroup
,没有则为空
-
get_unpositioned_tip
(**kwargs)¶ 返回没有定位的箭头,参数只有
tip_config
-
pop_tips
()¶ 删除并返回 tips
Arc¶
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_point
到end_point
的弯曲箭头,圆心角为90°其余关键字参数同
Arc
CurvedDoubleArrow¶
-
class
manimlib.mobject.geometry.
CurvedDoubleArrow
(start_point, end_point, **kwargs)¶ 弯曲的双向箭头
从
start_point
到end_point
的弯曲双向箭头,圆心角为90°其余关键字参数同
Arc
Circle¶
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
: 外圆半径其余同
Circle
(Arc
)
参数同
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
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
-
get_angle
()¶ 获取直线倾斜角
-
get_projection
(point)¶ 返回点在直线上的投影
-
get_slope
()¶ 获取直线斜率
-
get_unit_vector
()¶ 获取直线方向上的单位向量
-
get_vector
()¶ 获取直线的方向向量
-
pointify
(mob_or_point, direction=None)¶ Take an argument passed into Line (or subclass) and turn it into a 3d point.
-
put_start_and_end_on
(start, end)¶ 把直线的首尾放在
start, end
上
-
set_angle
(angle, about_point=None)¶ 设置直线倾斜角为
angle
-
set_length
(length, **kwargs)¶ 缩放到
length
长度
-
set_path_arc
(new_value)¶ 设置
path_arc
DashedLine¶
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
(start=array([- 1.0, 0.0, 0.0]), end=array([1.0, 0.0, 0.0]), **kwargs)¶ 带箭头的直线
和
Line
相同,箭头大小自动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=None, width=None, *args, **kwargs)¶ 设置轮廓线
FillArrow¶
-
class
manimlib.mobject.geometry.
FillArrow
(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
: 如果有此关键字参数,则使用ArcBetweemPoints
,path_arc
表示角度
-
get_end
()¶ 获取终止点
-
get_start
()¶ 获取起始点
-
put_start_and_end_on
(start, end)¶ 把直线的首尾放在
start, end
上
-
scale
(*args, **kwargs)¶ 缩放箭头,自动调节箭头大小和线条宽度
-
set_path_arc
(path_arc)¶ 设置
path_arc
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
(a0, h0, h1, a1, **kwargs)¶ 三阶贝塞尔曲线
测试中发现这个三阶贝塞尔曲线不准
传入
points
表示构成贝塞尔曲线的点集
Polygon¶
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)¶ 箭头标志
箭头大小不自动,需要手动设置
width
: 箭头的宽度length
: 箭头的长度tip_style
自定义箭头的样式tip_style=0
: 三角形tip_style=1
: 箭头内部带有弧线tip_style=2
: 圆形
Rectangle¶
-
class
manimlib.mobject.geometry.
Rectangle
(width=None, height=None, **kwargs)¶ 矩形
使用
Polygon
height
: 矩形高度width
: 矩形宽度
Square¶
-
class
manimlib.mobject.geometry.
Square
(side_length=2.0, **kwargs)¶ 正方形
side_length
是正方形边长
RoundedRectangle¶
-
class
manimlib.mobject.geometry.
RoundedRectangle
(**kwargs)¶ 圆角矩形
调用了
round_corners
的Rectangle
corner_radius
为圆角半径