如何在manimce的LinearTransformationScene中初始拉远镜头或缩放平面
解决方案1:直接调整摄像机帧大小(最简便)
manimCE的LinearTransformationScene实际默认继承了MovingCameraScene,你之前调用set_width失效是因为用了旧版3b1b manim的属性名self.camera_frame,CE版本对应的属性是self.camera.frame,且需要放在construct方法最开头,所有场景元素初始化之前执行,完全不会产生缩放动画,初始状态就是拉远后的效果:
from manim import * class LinearTransformTest(LinearTransformationScene): def construct(self): # 数值越大显示范围越大,设置为20时y轴±10范围内的内容都可以正常显示 self.camera.frame.set_width(20) # 后续正常写你的线性变换逻辑即可 vec = self.add_vector([0, 7], color=YELLOW) # 其余代码...
解决方案2:自定义坐标平面传入场景
如果需要同时调整平面的刻度、网格密度、坐标轴样式,直接预先构造符合你需求的NumberPlane,在初始化场景时传入替换默认平面,不会出现两套坐标轴的问题:
from manim import * class LinearTransformTest(LinearTransformationScene): def __init__(self, **kwargs): # 自定义符合需求的坐标平面 custom_plane = NumberPlane( x_range=(-10, 10, 1), y_range=(-10, 10, 1), axis_config={"include_numbers": True} ) # 传入foreground_plane参数替换默认平面,其他场景参数也可以在这里设置 super().__init__( foreground_plane=custom_plane, show_basis_vectors=True, **kwargs ) def construct(self): # 后续正常写你的线性变换逻辑即可 vec = self.add_vector([0, 7], color=YELLOW) # 其余代码...
内容的提问来源于stack exchange,提问作者Sophile
相关产品推荐
相关产品推荐

