创建贝塞尔曲线

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本教程中,我们将学习如何使用 Python 的 Matplotlib 库创建贝塞尔曲线(Bezier Curve)。贝塞尔曲线是一种数学曲线,常用于计算机图形学中,以创建平滑且美观的形状。我们将使用 Matplotlib 的 PathPatch 对象创建一个简单的贝塞尔曲线示例。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48891{{"创建贝塞尔曲线"}} matplotlib/figures_axes -.-> lab-48891{{"创建贝塞尔曲线"}} matplotlib/line_plots -.-> lab-48891{{"创建贝塞尔曲线"}} python/lists -.-> lab-48891{{"创建贝塞尔曲线"}} python/tuples -.-> lab-48891{{"创建贝塞尔曲线"}} python/importing_modules -.-> lab-48891{{"创建贝塞尔曲线"}} python/data_visualization -.-> lab-48891{{"创建贝塞尔曲线"}} end

导入库

要使用 Matplotlib 创建贝塞尔曲线,我们需要导入必要的库。我们将导入 matplotlib.pyplot 来创建绘图,并导入 matplotlib.patches 来创建 PathPatch 对象。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.path as mpath

创建路径

接下来,我们将为贝塞尔曲线创建 Path 对象。Path 对象接受一个顶点列表和代码,这些代码指定了顶点之间的路径类型。在这种情况下,我们将使用 MOVETO 代码移动到起点,然后使用两个 CURVE3 代码指定控制点和终点,最后使用 CLOSEPOLY 代码闭合路径。

Path = mpath.Path

bezier_path = Path([(0, 0), (1, 0), (1, 1), (0, 0)],
                   [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY])

创建 PathPatch 对象

既然我们已经有了 Path 对象,就可以创建 PathPatch 对象了,它将用于在绘图上绘制贝塞尔曲线。我们将把 facecolor 设置为 'none',这样就只会绘制曲线而不会填充。

bezier_patch = mpatches.PathPatch(bezier_path, fc="none")

创建绘图

现在我们可以通过将 PathPatch 对象添加到坐标轴,并绘制一个应该位于曲线上的红色点来创建绘图。我们还将绘图的标题设置为“贝塞尔曲线”。

fig, ax = plt.subplots()

ax.add_patch(bezier_patch)
ax.plot([0.75], [0.25], "ro")
ax.set_title('Bezier Curve')

plt.show()

最终代码应如下所示:

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.path as mpath

Path = mpath.Path

bezier_path = Path([(0, 0), (1, 0), (1, 1), (0, 0)],
                   [Path.MOVETO, Path.CURVE3, Path.CURVE3, Path.CLOSEPOLY])

bezier_patch = mpatches.PathPatch(bezier_path, fc="none")

fig, ax = plt.subplots()

ax.add_patch(bezier_patch)
ax.plot([0.75], [0.25], "ro")
ax.set_title('Bezier Curve')

plt.show()

总结

在本教程中,我们学习了如何使用 Python 的 Matplotlib 库创建贝塞尔曲线。我们使用 PathPathPatch 对象来创建曲线,并将其添加到绘图中。我们还在曲线上绘制了一个红点,以表明它位于曲线上。贝塞尔曲线常用于计算机图形学中,以创建平滑且美观的形状。