manim 证明余弦定理
时间: 2024-01-11 17:02:33 浏览: 200
以下是一个简单的例子,使用 Manim 演示余弦定理的证明:
首先,我们创建一个三角形 ABC:
``` python
from manim import *
class CosineTheorem(Scene):
def construct(self):
a = 3
b = 4
c = 5
triangle = Polygon(
ORIGIN, a * RIGHT, b * np.array([np.cos(np.arccos(c / (2 * a))),
np.sin(np.arccos(c / (2 * a))), 0]),
stroke_width=2, stroke_color=WHITE, fill_opacity=0.5, color=BLUE
)
self.add(triangle)
```
这里我们定义了三角形的三边长 a、b、c,然后使用 `Polygon` 创建三角形。其中第三个顶点的坐标是根据余弦定理计算得到的。
接下来,我们添加三条边的标签:
``` python
label_a = Tex(f"{a}", font_size=30).next_to(triangle.get_vertices()[1], UP)
label_b = Tex(f"{b}", font_size=30).next_to(triangle.get_vertices()[2], UR)
label_c = Tex(f"{c}", font_size=30).next_to(triangle.get_vertices()[0], LEFT)
self.add(label_a, label_b, label_c)
```
这里使用 `Tex` 创建标签,然后使用 `next_to` 将标签放置在对应的边上。
现在,我们可以开始使用余弦定理来证明三角形的一个角的余弦值:
``` python
angle = Arc(
start_angle=angle_of_vector((b + c * RIGHT) / 2),
angle=angle_of_vector((-b + c * RIGHT) / 2),
radius=0.7, stroke_width=2, stroke_color=WHITE
)
self.play(Create(angle))
self.wait()
cos_formula = MathTex(
f"\\cos(\\theta) = \\frac{{{b}^2 + {c}^2 - {a}^2}}{{2\\cdot{b}\\cdot{c}}}",
font_size=30
).next_to(triangle, DOWN, buff=1)
self.play(Write(cos_formula))
self.wait()
```
这里我们使用 `Arc` 创建一个圆弧,表示三角形的角,然后使用 `angle_of_vector` 计算两个向量的夹角。然后,我们在圆弧上方添加一个公式,表示余弦定理。
最后,我们可以使用 `manim` 的 `wait` 函数来观察演示效果,或者使用 `manim` 的 `play` 函数来执行动画效果。
阅读全文