系列文章目录
Python 建模入门:圆锥建模
文章目录
- 系列文章目录
- 一、建模需求
- 二、源代码
- 三、代码分析
- 四、效果展示
- 总结
一、建模需求
使用matplotlib库和mpl_toolkits.mplot3d模块来绘制一个带有坐标轴的圆锥体的3D图形
二、源代码
代码如下:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
def draw_cone_with_axes(radius, height):
# 创建一个新的图和子图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成圆锥侧面的网格
theta = np.linspace(0, 2 * np.pi, 50) # 圆周上的点
r = np.linspace(0, radius, 50) # 从底面到顶点的径向距离
theta, r = np.meshgrid(theta, r)
x = r * np.cos(theta) # 圆锥侧面的x坐标
y = r * np.sin(theta) # 圆锥侧面的y坐标
z = height - (height / radius) * r # 圆锥侧面的z坐标
# 过滤掉顶点,因为顶点是一个单独的点
x_top = x[-1, :]
y_top = y[-1, :]
z_top = z[-1, :]
x = x[:-1, :]
y = y[:-1, :]
z = z[:-1, :]
# 绘制圆锥侧面
ax.plot_surface(x, y, z, color='b', alpha=0.5)
# 绘制圆锥底面圆环
ax.plot(x[:, 0], y[:, 0], z[:, 0], color='b')
# 绘制圆锥顶点
ax.scatter(x_top[0], y_top[0], z_top[0], color='r')
# 设置坐标轴范围
ax.set_xlim([-radius, radius])
ax.set_ylim([-radius, radius])
ax.set_zlim([0, height])
# 设置坐标轴比例为等比例
ax.set_box_aspect([1, 1, 1])
# 显示坐标轴
ax.set_axis_on()
# 设置坐标轴标题
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
# 显示图形
plt.show()
# 调用函数绘制带坐标轴的圆锥体
draw_cone_with_axes(1, 3)
三、代码分析
1.导入matplotlib.pyplot模块,别名为plt,用于绘图。
2.从mpl_toolkits.mplot3d导入Axes3D,用于创建3D坐标轴。
3.导入numpy库,用于数值计算。
5-6. 定义了一个名为draw_cone_with_axes的函数,该函数接受两个参数:radius(圆锥底面半径)和height(圆锥高度)。
8-9. 创建一个新的matplotlib图形和一个3D坐标轴。
11-17. 使用numpy的linspace和meshgrid函数生成圆锥侧面的网格。theta是圆周上的点,r是从底面到顶点的径向距离。根据圆锥的几何关系计算出x、y和z坐标。
19-24. 过滤掉圆锥顶点,因为顶点是一个单独的点,不在侧面网格上。提取顶点坐标。
26.使用plot_surface方法绘制圆锥的侧面。x、y、z是圆锥侧面上的点的坐标,color='b’设置侧面颜色为蓝色,alpha=0.5设置侧面透明度为半透明。
27.使用plot方法绘制圆锥底面的圆环。这里取z坐标的第一个元素,即底面。
28.使用scatter方法绘制圆锥的顶点,颜色设置为红色。
32-35. 设置3D坐标轴的显示范围,分别对应圆锥的底面半径和高度。
37.设置坐标轴比例为等比例,使得所有轴上的单位长度相同。
38.显示坐标轴。
41-43. 设置坐标轴的标题,分别标记为’X’、‘Y’和’Z’。
45.调用plt.show()显示图形。
46.调用draw_cone_with_axes函数绘制一个底面半径为1,高度为3的圆锥体。
代码中创建的圆锥体具有以下特点:
侧面由半透明的蓝色表面表示。
底面是一个蓝色的圆环。
顶点是一个红色的点。
有坐标轴,坐标轴的范围和比例被适当设置,以清晰地展示圆锥体。
四、效果展示
总结
以上就是今天要讲的内容,运行这段代码会弹出一个窗口,显示一个带有坐标轴的圆锥体的3D图形。