ManimGeo 快速开始
几何搭建示例
为了快速认识 ManimGeo,你可以在文件夹内新建一个文件 euler_line.py
,然后将以下代码粘贴到你的文件内
euler_line.py
import numpy as np
from manimgeo.components import *
from manimgeo.utils import GeoUtils
# 构造三角形ABC
A = PointFree(np.array([0, 0]), "A")
B = PointFree(np.array([5, 0]), "B")
C = PointFree(np.array([2, 3]), "C")
[print(f"{P.name}: {P.coord}") for P in [A, B, C]]
# 构造边
AB = LineSegmentPP(A, B, "AB")
BC = LineSegmentPP(B, C, "BC")
AC = LineSegmentPP(A, C, "AC")
[print(f"{L.name}: {L.start} -> {L.end}") for L in [AB, BC, AC]]
# 重心 垂心 外心
CENTROID = PointCentroidPPP(A, B, C, "Centroid")
ORTHOCENTER = PointOrthocenterPPP(A, B, C, "Orthocenter")
CIRCUMCENTER = PointCircumcenterPPP(A, B, C, "Circumcenter")
[print(f"{P.name}: {P.coord}") for P in [CENTROID, ORTHOCENTER, CIRCUMCENTER]]
# 测试依赖关系
print("\nDependencies of A:")
GeoUtils.print_dependencies(A)
print("")
# 验证三点共线
vectors = np.array([
CENTROID.coord - ORTHOCENTER.coord,
CIRCUMCENTER.coord - ORTHOCENTER.coord
])
rank = np.linalg.matrix_rank(vectors)
print(f"rank == 1: {rank == 1}")
接下来,运行这个程序
python euler_line.py
接下来你应该会看到如下输出:
A: [0 0]
B: [5 0]
C: [2 3]
AB: [0 0] -> [5 0]
BC: [5 0] -> [2 3]
AC: [0 0] -> [2 3]
Centroid: [2.33333333 1. ]
Orthocenter: [2. 2.]
Circumcenter: [2.5 0.5]
Dependencies of A:
· Point - (A)
· InfinityLine - (AB)
· InfinityLine - (AC)
· Point - (Centroid)
· Point - (Orthocenter)
· Point - (Circumcenter)
rank == 1: True
这行代码的作用是:验证三角形的重心、垂心与外心三点共线
然后,我们具体看一下这段代码干了什么:
导入相关依赖
import numpy as np
from manimgeo.components import *
from manimgeo.utils import GeoUtils
以上三行导入了相关依赖:NumPy
和 ManimGeo
,前者帮助我们创建数组、进行计算,后者帮助我们创建几何图形。
一次性导入所有需要的几何组件
ManimGeo 的几何组件分布在不同的文件中,但是通过 from manimgeo.components import *
便可以全部导入
构造点
# 构造三角形ABC
A = PointFree(np.array([0, 0]), "A")
B = PointFree(np.array([5, 0]), "B")
C = PointFree(np.array([2, 3]), "C")