You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
from manim import *
|
|
|
|
|
import manim
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CoordinateSystem(Scene):
|
|
|
|
|
def construct(self):
|
|
|
|
|
# ===== 左侧坐标系 =====
|
|
|
|
|
# 使用Axes替代NumberPlane以获得更多功能
|
|
|
|
|
left_axes = Axes(
|
|
|
|
|
x_range=[-4, 4, 1],
|
|
|
|
|
y_range=[0, 20, 5],
|
|
|
|
|
x_length=4,
|
|
|
|
|
y_length=4,
|
|
|
|
|
axis_config={"color": BLUE}
|
|
|
|
|
).add_coordinates()
|
|
|
|
|
left_axes.shift(LEFT * 3 + DOWN * 1.5)
|
|
|
|
|
|
|
|
|
|
# 修正1:正确的函数表达式和参数
|
|
|
|
|
left_graph = left_axes.plot(
|
|
|
|
|
lambda x: x ** 2, # 修正指数函数
|
|
|
|
|
x_range=[-4, 4],
|
|
|
|
|
color=GREEN
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 修正2:使用正确的黎曼矩形方法
|
|
|
|
|
riemann_area = left_axes.get_riemann_rectangles(
|
|
|
|
|
left_graph,
|
|
|
|
|
x_range=[-2, 2],
|
|
|
|
|
dx=0.2, # 调整密度
|
|
|
|
|
color=[BLUE, GREEN],
|
|
|
|
|
input_sample_type="right"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ===== 右侧坐标系 =====
|
|
|
|
|
right_axes = Axes(
|
|
|
|
|
x_range=[-4, 4, 1],
|
|
|
|
|
y_range=[-20, 20, 5],
|
|
|
|
|
x_length=4,
|
|
|
|
|
y_length=4,
|
|
|
|
|
axis_config={"color": RED}
|
|
|
|
|
).add_coordinates()
|
|
|
|
|
right_axes.shift(RIGHT * 3 + DOWN * 1.5)
|
|
|
|
|
|
|
|
|
|
right_graph = right_axes.plot(
|
|
|
|
|
lambda x: 2 * x,
|
|
|
|
|
x_range=[-4, 4],
|
|
|
|
|
color=YELLOW
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 修正3:正确的垂线方法
|
|
|
|
|
v_lines = right_axes.get_vertical_lines_to_graph(
|
|
|
|
|
right_graph,
|
|
|
|
|
x_range=[-3, 3],
|
|
|
|
|
num_lines=12,
|
|
|
|
|
color=WHITE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# ===== 动画序列 =====
|
|
|
|
|
# 修正4:分步动画展示
|
|
|
|
|
self.play(
|
|
|
|
|
LaggedStart(
|
|
|
|
|
Create(left_axes),
|
|
|
|
|
Create(right_axes),
|
|
|
|
|
lag_ratio=0.5
|
|
|
|
|
),
|
|
|
|
|
run_time=2
|
|
|
|
|
)
|
|
|
|
|
self.play(
|
|
|
|
|
Create(left_graph),
|
|
|
|
|
Create(right_graph),
|
|
|
|
|
run_time=3
|
|
|
|
|
)
|
|
|
|
|
self.play(
|
|
|
|
|
FadeIn(riemann_area),
|
|
|
|
|
Create(v_lines),
|
|
|
|
|
run_time=2
|
|
|
|
|
)
|
|
|
|
|
self.wait()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
config = {
|
|
|
|
|
"quality": "low_quality",
|
|
|
|
|
"preview": True,
|
|
|
|
|
"media_dir": "./output"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
with manim.tempconfig(config):
|
|
|
|
|
scene = CoordinateSystem()
|
|
|
|
|
scene.render()
|