【附源码】Python :圆锥建模

系列文章目录

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图形。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃饭团的饭桶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值