Manim教程:第七章 坐标系统
#什么是坐标系统?特点是什么?
坐标系统是一个用于确定空间中点位置的数学工具。它通过一组数值(坐标)来描述一个点在某个空间中的位置。不同类型的坐标系统可以用于不同的应用场景,最常见的包括:
笛卡尔坐标系:使用直角坐标系,通常用坐标轴(如x轴和y轴)来表示二维空间中的位置。三维空间则使用x、y和z轴。
极坐标系:在二维空间中,使用一个角度和一个距离来描述点的位置。极坐标系特别适合于处理与圆形或周期性相关的问题。
球坐标系和柱坐标系:用于描述三维空间中的点,分别适用于球形和柱形对称的情况。
其他坐标系:如地理坐标系(用于地球表面的定位)、同伦坐标系等### 坐标系统在数学和科学界的影响力
几何学:坐标系统使得几何问题可以转化为代数问题,便于分析和解决。通过坐标,可以更容易地进行图形的绘制、变换和计算。
物理学:在物理学中,坐标系统用于描述物体的位置、速度和加速度等。例如,在经典力学中,运动方程常常需要在特定的坐标系统中进行分析。
工程学:各种工程设计和分析(如CAD软件)都依赖于坐标系统来定义和操作设计对象。
. 计算机科学:计算机图形学、机器学习和数据科学等领域广泛使用坐标系统来处理和分析数据。
- 天文学:天文学家使用坐标系统(如赤道坐标系)来定位天体,帮助我们理解宇宙的结构和动态。
7.1在Manim中坐标系的创建和使用
1.创建坐标轴
Axes(x_range=None, y_range=None, x_length=12, y_length=6, axis_config=None,
x_axis_config=None, y_axis_config=None, tips=True, **kwargs)
Axes
是一个用于创建坐标轴的函数,通常用于数学可视化或动画库中,比如 Manim。这个函数定义了一个坐标系,并允许用户自定义各种参数以满足特定的可视化需求。以下是各个参数的详细解释:
-
x_range
:设置 x 轴的范围,通常是一个包含两个元素的元组,例如(xmin, xmax)
。这将确定绘图时 x 轴的起始和结束值。 -
y_range
:设置 y 轴的范围。类似于x_range
,也是一个包含两个元素的元组,例如(ymin, ymax)
。 -
x_length
:设定 x 轴的长度(通常以单位为长度的像素或任意其他度量单位)。 -
y_length
:设定 y 轴的长度。 -
axis_config
:一个字典,用于定义整个坐标轴的通用配置选项,比如颜色、线条样式等。 -
x_axis_config
:一个字典,用于定义 x 轴的特定配置选项,例如轴线颜色、刻度的样式等。 -
y_axis_config
:一个字典,用于定义 y 轴的特定配置选项,设置与y_axis_config
类似。 -
tips
:布尔值,指示是否在轴的末端添加箭头(tip)。默认情况下为True
。 -
**kwargs
:其他关键字参数,可以传入更多配置选项,用于更进一步自定义 Axes 对象的外观和行为。
示例1:
-
from manim import * class LogScalingExample(Scene): def construct(self): ax = Axes( x_range=[0, 10, 1], y_range=[-2, 6, 1], tips=False, axis_config={"include_numbers": True, "stroke_color": WHITE}, # 这里设置坐标轴颜色 y_axis_config={"scaling": LogBase(), "stroke_color": GREEN}, # y轴颜色设置 ) # 设置 x 轴和 y 轴的标签 x_label = ax.get_x_axis_label("X") y_label = ax.get_y_axis_label("Y") # 手动设置标签颜色 x_label.set_color(BLUE) # 设置 x 轴标签的颜色 y_label.set_color(YELLOW) # 设置 y 轴标签的颜色 # x_min must be > 0 because log is undefined at 0. graph = ax.plot(lambda x: x ** 2, x_range=[0.001, 10], use_smoothing=False, color=ORANGE) # 设置图形的颜色 # 将坐标轴、标签和图形添加到场景 self.add(ax, graph, x_label, y_label)
函数和参数解释:
Axes
类:x_range
: 定义 x 轴的范围。第一个元素是起始值,第二个元素是结束值,第三个元素是步长。y_range
: 定义 y 轴的范围。参数意义同x_range
。tips
: 设置为False
时不显示坐标轴的箭头尾。axis_config
: 用于配置坐标轴的属性。这包括:include_numbers
: 如果设置为True
,坐标轴上将显示数字。stroke_color
: 设置坐标轴线的颜色。
y_axis_config
: 用于单独配置 y 轴的属性,特别是这里使用了scaling: LogBase()
来设置 y 轴为对数坐标。
标签的获取和设置:
get_x_axis_label("X")
: 获取 x 轴的标签,并设置其文本为 "X"。get_y_axis_label("Y")
: 获取 y 轴的标签,并设置其文本为 "Y"。set_color(color)
: 此函数用于设置 Mobject 的颜色。在这里用来分别设置 x 和 y 轴标签的颜色。
绘制图形:
ax.plot()
: 根据给定的数学函数绘制图形,在这里是lambda x: x ** 2
,表示 y = x²。x_range
用于指定 x 的取值范围。use_smoothing
: 决定绘制的线条是否要进行平滑处理。color
: 设置绘制的图形颜色,此处为橙色。
添加到场景:
self.add(...)
: 将创建的坐标轴(ax
)、图形(graph
)和标签(x_label
和y_label
)添加到场景中,从而在动画中显示。
总结:
这段代码实现了一个简单的坐标系,展示了一个对数刻度的 y 轴和一个抛物线函数(y = x²),同时还设置了坐标轴和标签的颜色。该示例展示了 Manim 中如何使用坐标轴和图形绘制以及自定义样式的基本用法。
运行结果:
示例2:
class AxesWithDifferentTips(Scene):def construct(self):self.camera.background_color = WHITEax = Axes(axis_config={'tip_shape': StealthTip,"stroke_color": BLACK})self.add(