|
|
|
@ -0,0 +1,48 @@
|
|
|
|
|
import manim
|
|
|
|
|
from manim import *
|
|
|
|
|
from manim import ValueTracker # 需要显式导入ValueTracker
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GraphingMovement(Scene):
|
|
|
|
|
def construct(self):
|
|
|
|
|
#创建坐标系
|
|
|
|
|
axes = Axes(x_range = [0,5,1], y_range = [0,3,1],axis_config={"include_tips":True,"numbers_to_exclude":[0]}).add_coordinates()
|
|
|
|
|
#位置在右上角
|
|
|
|
|
axes.to_edge (UR)
|
|
|
|
|
#设置xy轴的显示tips,并拿到该对象
|
|
|
|
|
axis_labels = axes.get_axis_labels(x_label = "x", y_label = "f(x)")
|
|
|
|
|
#在坐标系画图,并得到图像对象
|
|
|
|
|
graph = axes.get_graph(lambda x : x**0.5, x_range = [0,4], color = YELLOW)
|
|
|
|
|
#将坐标系,坐标tips,图像组队
|
|
|
|
|
graphing_stuff = VGroup(axes, graph, axis_labels)
|
|
|
|
|
#动画画出坐标系和labels
|
|
|
|
|
self.play(DrawBorderThenFill(axes), Write(axis_labels))
|
|
|
|
|
#动画创建图像
|
|
|
|
|
self.play(Create(graph))
|
|
|
|
|
#将组整体移动四个单位
|
|
|
|
|
self.play(graphing_stuff.animate.shift(DOWN*4), run_time=3)
|
|
|
|
|
#将坐标系单独向左移动
|
|
|
|
|
self.play(axes.animate.shift(LEFT*3), run_time = 3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 当直接运行本脚本时执行以下代码
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
"""
|
|
|
|
|
配置渲染参数并执行场景渲染
|
|
|
|
|
等效命令行命令:
|
|
|
|
|
manim -pql -o custom_output 当前文件.py BoxAnimation
|
|
|
|
|
"""
|
|
|
|
|
# 配置字典说明:
|
|
|
|
|
config = {
|
|
|
|
|
"quality": "low_quality", # 渲染质量等级(low_quality对应480p)
|
|
|
|
|
"preview": True, # 渲染完成后自动打开播放器
|
|
|
|
|
"input_file": __file__, # 指定输入文件为当前文件
|
|
|
|
|
"media_dir": "./custom_output" # 自定义输出目录(默认在media/)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 使用临时配置渲染场景(配置只在with块内有效)
|
|
|
|
|
with manim.tempconfig(config):
|
|
|
|
|
# 实例化场景类
|
|
|
|
|
scene = GraphingMovement()
|
|
|
|
|
# 执行渲染流程(包含文件生成和预览)
|
|
|
|
|
scene.render()
|