position原创
FRAME_HEIGHT
默认为8,即画面高度默认为8个单位。
FRAME_WIDTH
由单位的长宽比决定。
constants.py
定义了以下方向常量:
# `manim` 使用三维 `ndarray` 表示一个点的坐标:
# np.array([x,y,z])
UP=np.array([0,1,0])
DOWN=np.array([0,-1,0])
LEFT=np.array([-1,0,0])
RIGHT=np.array([1,0,0])
OUT=np.array([0,0,1])
IN=np.array([0,0,-1])
# UL UR DL DR 对应上左、上右、下左、下右
# TOP BOTTOM LEFT_SIDE RIGHT_SIDE 顶部、底部、左边、右边
# 在3D中,还有 OUT IN 向外、向里
坐标之间根据向量计算法则进行计算,如: UP2+RIGHT3 = np.array([3,2,0])
img.set_hight() # 设置图片高度
img.set_width() # 设置图片宽度
# absolute
绝对位置。
# .to_edge()
.to_edge(位置,buff=数字)
xxx.to_edge(UP) # 对象距离上边1个单位
xxx.to_edge(DOWN) # 对象距离下边1个单位
# .to_corner()
将对象移动到角落。
xxx.to_corner(UR [,buff]) // buff 为缓冲,默认buff 为0.5,BUFF 可以理解为角落单位的倍数距离
需要self.add(mob)
才能显现。
xxx.to_corner(UR)
xxx.to_corner(UP+RIGHT) # 对象距离右上边1个单位
xxx.to_corner(DOWN+LEFT) # 对象距离左下边1个单位
# relative
相对位置。
# .move_to()
以对象中心为移动点,使目标移动到指定位置。
vector = np.array([1,2,0]) # x=1 y=2 z=0
xxx.move_to(UP*2+RIGHT) # 对象向上移动2个单位,向右移动一个单位
xxx.move_to(vector) # 对象向上移动2个单位,向右移动一个单位
xxx.move_to(vector,LEFT) # 第二个参数是对齐方式,默认居中对齐
xxx.move_to(vector,RIGHT,np.array([1,1,1])) # 第三个参数是移动的维度,是数组,默认为[1,1,1],可以设置为0,屏蔽其移动维度。
# .next_to()
紧挨着一个物体。
mob.next_to(mob1) # mob1 在 mob 的右边
mob.next_to(mob1,UP) # mob1 在 mob 的上边
mob.next_to(mob1,RIGHT, aligned_edage=UP) # mob1 在 mob 的右边,并与 mob 的上边对齐
mob.next_to(mob1,RIGHT, aligned_edage=UP, buff=2) # buff 设置缓冲距离
# 组对齐
A = VGroup(...)
B = VGroup(...)
B.next_to(A[1],DWON, aligned_edage=LEFT) # B在A的下面,并且 B0 与 A1 对齐
B.next_to(A[2],DWON, submobject_to_align=B[1], aligned_edage=LEFT) # B在A的下面,并且 B1与 A2 对齐
B.next_to(A,DWON, index_of_submobject_to_align=2, submobject_to_align=B[1], aligned_edage=LEFT) # 等价于上面
# .shift()
相对位置的移动。
xxx.shift(UP) # 对象向上移动1个单位
xxx.shift(UP*5) # 对象向上移动5个单位
xxx.shift(UP*2+RIGHT*3) # 对象向上移动2个单位向右移动3个单位
xxx.shift(UP*2,RIGHT*3) # 对象向上移动2个单位向右移动3个单位
# align_to
对齐
mob.align_to(参考的对象, 对齐基准)
mob.align_to(mob2,UP) # 以mob2上边为基准对齐
mob.align_to(mob2,UR) # 以mob2右上为基准对齐
上次更新: 2022/09/12, 23:05:31