三角形三维曲面

PythonPythonBeginner
立即练习

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

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

简介

在本实验中,我们将学习如何使用 Python Matplotlib 库创建具有三角形网格的 3D 曲面。

虚拟机提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) 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") python/BasicConceptsGroup -.-> python/booleans("Booleans") python/BasicConceptsGroup -.-> python/comments("Comments") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("Numerical Computing") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("Data Visualization") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-49013{{"三角形三维曲面"}} matplotlib/figures_axes -.-> lab-49013{{"三角形三维曲面"}} python/booleans -.-> lab-49013{{"三角形三维曲面"}} python/comments -.-> lab-49013{{"三角形三维曲面"}} python/lists -.-> lab-49013{{"三角形三维曲面"}} python/tuples -.-> lab-49013{{"三角形三维曲面"}} python/importing_modules -.-> lab-49013{{"三角形三维曲面"}} python/numerical_computing -.-> lab-49013{{"三角形三维曲面"}} python/data_visualization -.-> lab-49013{{"三角形三维曲面"}} end

导入库

首先,我们需要导入必要的库:

import matplotlib.pyplot as plt
import numpy as np

定义变量

我们将定义半径和角度的变量:

n_radii = 8
n_angles = 36

创建半径和角度空间

我们将使用 linspace 函数创建半径和角度空间:

## 生成半径和角度空间(省略 r=0 的半径以消除重复)。
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]

将极坐标转换为笛卡尔坐标

我们将把极坐标转换为笛卡尔坐标:

## 将极坐标(半径,角度)转换为笛卡尔坐标(x,y)。
## 在此阶段手动添加 (0, 0),这样在 (x, y) 平面中就不会有重复的点。
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())

计算 Z 以生成品客薯片形状的曲面

我们将计算 z 来生成品客薯片形状的曲面:

## 计算 z 以生成品客薯片形状的曲面。
z = np.sin(-x*y)

创建三维曲面

我们将使用 plot_trisurf 函数创建三维曲面:

ax = plt.figure().add_subplot(projection='3d')
ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

plt.show()

总结

在本实验中,我们学习了如何使用 Python 的 Matplotlib 库通过三角网格创建三维曲面。我们导入了必要的库,定义了半径和角度的变量,创建了半径和角度空间,将极坐标转换为笛卡尔坐标,计算 z 以生成品客薯片形状的曲面,并使用 plot_trisurf 函数创建了三维曲面。