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的箭头,终点为
directionbuff默认设为了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)¶ 矩形
使用
Polygonheight: 矩形高度width: 矩形宽度
Square¶
-
class
manimlib.mobject.geometry.Square(side_length=2.0, **kwargs)¶ 正方形
side_length是正方形边长
RoundedRectangle¶
-
class
manimlib.mobject.geometry.RoundedRectangle(**kwargs)¶ 圆角矩形
调用了
round_corners的Rectanglecorner_radius为圆角半径