Files
dsProject/dsLightRag/Manim/TiShiCi.txt
2025-08-14 15:45:08 +08:00

191 lines
6.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== 提示词 ======
你是一位资深 Manim 动画工程师,专注于教育场景。请遵循以下规范:
1. 仅输出 Python 代码,不解释思路。
2. 使用 Manim 社区版 v0.18.0 语法。
3. 严格按提示的步骤进行编码,不要发挥、扩展。
4. 所有公式用 MathTex文字用 Text更好地支持中文颜色统一用 Manim 内置调色板。
5. 关键坐标用常量定义在类顶部,例如 LEFT_MARGIN = 3.2。
6. 每行不超过 88 字符,函数名用 snake_case。
7. 动画时长 3-5 秒 / 步,默认 ease-in-out。
8. 请严格按照以下模板:坐标轴范围、颜色、字体统一使用 Manim 社区版默认主题。
9. 代码的最后,参考下面的代码添加相应内容:
if __name__ == "__main__":
# 导入必要的模块
import sys
import os
# 设置 UTF-8 编码
os.environ['PYTHONIOENCODING'] = 'utf-8'
sys.stdout.reconfigure(encoding='utf-8')
sys.stderr.reconfigure(encoding='utf-8')
# 全局指定 ctex 模板(一次性)
config.tex_template = TexTemplateLibrary.ctex
# 使用临时配置渲染场景配置只在with块内有效
with tempconfig({
"quality": "high_quality",
"background_color": WHITE,
"preview": True
}):
# 实例化场景类
scene = ParabolaUp()
# 执行渲染流程(包含文件生成和预览)
scene.render()
10. 【输出要求】
(1). 完整可运行 Python 脚本,文件名 ParabolaUp.py。
(2). 场景类名 ParabolaUp。
(3). 包含 `if __name__ == "__main__":` 可直接 `manim -pql ParabolaUp.py ParabolaUp`。
(4). 代码内只出现中文注释,方便二次修改。
本成的具体需求如下:
{XuQiu}
====== 生成结果 ======
```python
from manim import *
class ParabolaUp(Scene):
# 定义常量坐标
X_MIN, X_MAX = -4, 4
Y_MIN, Y_MAX = -3, 5
LEGEND_X = 3.5
LEGEND_Y_START = 3
LABEL_X = 2.0
def construct(self):
# 创建坐标轴系统
axes = Axes(
x_range=[self.X_MIN, self.X_MAX, 1],
y_range=[self.Y_MIN, self.Y_MAX, 1],
axis_config={"color": BLACK}
)
axes_labels = axes.get_axis_labels(x_label="x", y_label="y")
title = Text("二次函数图像", font_size=24, color=BLACK).to_edge(UP)
# 创建三个二次函数图像
graph1 = axes.plot(
lambda x: 0.5 * x**2,
color=BLUE,
x_range=[self.X_MIN, self.X_MAX]
)
graph2 = axes.plot(
lambda x: -0.5 * x**2,
color=RED,
x_range=[self.X_MIN, self.X_MAX]
)
graph3 = DashedVMobject(
axes.plot(lambda x: 0, color=GREEN, x_range=[self.X_MIN, self.X_MAX]),
num_dashes=50
)
# 创建函数表达式标签
label1 = MathTex(r"y = 0.5x^2", font_size=24, color=BLUE)
label1.move_to(axes.c2p(self.LABEL_X, 0.5 * self.LABEL_X**2 + 0.5))
label2 = MathTex(r"y = -0.5x^2", font_size=24, color=RED)
label2.move_to(axes.c2p(self.LABEL_X, -0.5 * self.LABEL_X**2 - 0.5))
label3 = MathTex(r"y = 0", font_size=24, color=GREEN)
label3.move_to(axes.c2p(self.LABEL_X, 0.5))
# 创建顶点标记
vertex_dot = Dot(axes.c2p(0, 0), color=BLACK, radius=0.08)
vertex_label = Text("顶点(0,0)", font_size=20, color=BLACK)
vertex_label.next_to(vertex_dot, DOWN, buff=0.1)
# 创建图例
legend_group = VGroup()
colors = [BLUE, RED, GREEN]
labels = ["a>0", "a<0", "a=0"]
styles = [None, None, DashedLine]
for i, (color, text, style) in enumerate(zip(colors, labels, styles)):
y_pos = self.LEGEND_Y_START - i * 0.8
pos = axes.c2p(self.LEGEND_X, y_pos)
if style is DashedLine:
line = DashedLine(
start=pos + LEFT*0.5,
end=pos + RIGHT*0.5,
color=color,
dash_length=0.1
)
else:
line = Line(
start=pos + LEFT*0.5,
end=pos + RIGHT*0.5,
color=color
)
text_item = Text(text, font_size=20, color=BLACK)
text_item.next_to(line, RIGHT, buff=0.2)
legend_item = VGroup(line, text_item)
legend_group.add(legend_item)
# 动画序列
self.play(
Create(axes),
Write(axes_labels),
Write(title),
run_time=2
)
self.wait(0.5)
# 绘制第一条抛物线
self.play(
Create(graph1),
Write(label1),
run_time=1.5
)
self.play(
Create(vertex_dot),
Write(vertex_label),
run_time=1
)
self.wait(0.5)
# 绘制第二条抛物线
self.play(
Create(graph2),
Write(label2),
run_time=1.5
)
self.wait(0.5)
# 绘制第三条抛物线
self.play(
Create(graph3),
Write(label3),
run_time=1.5
)
self.wait(0.5)
# 添加图例
self.play(
LaggedStart(*[FadeIn(item) for item in legend_group], lag_ratio=0.3),
run_time=2
)
self.wait(2)
if __name__ == "__main__":
# 导入必要的模块
import sys
import os
# 设置 UTF-8 编码
os.environ['PYTHONIOENCODING'] = 'utf-8'
sys.stdout.reconfigure(encoding='utf-8')
sys.stderr.reconfigure(encoding='utf-8')
# 全局指定 ctex 模板(一次性)
config.tex_template = TexTemplateLibrary.ctex
# 使用临时配置渲染场景配置只在with块内有效
with tempconfig({
"quality": "high_quality",
"background_color": WHITE,
"preview": True
}):
# 实例化场景类
scene = ParabolaUp()
# 执行渲染流程(包含文件生成和预览)
scene.render()
```