【附源码】Python :长方体建模

系列文章目录

Python 建模入门:长方体建模



一、建模需求

使用matplotlib库和mpl_toolkits.mplot3d模块来绘制一个长方体


二、源代码

代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection

def draw_cuboid(length, width, height):
    # 长方体的顶点
    # 假设长方体的底部在xy平面上,顶点按逆时针方向排列
    vertices = [
        [0, 0, 0],  # 底面左下角
        [length, 0, 0],  # 底面右下角
        [length, width, 0],  # 底面右上角
        [0, width, 0],  # 底面左上角
        [0, 0, height],  # 顶面左下角
        [length, 0, height],  # 顶面右下角
        [length, width, height],  # 顶面右上角
        [0, width, height]  # 顶面左上角
    ]

    # 长方体的六个面
    # 每个面由两个三角形组成,每个三角形由三个顶点索引定义
    faces = [
        (0, 1, 2, 3),  # 底面
        (0, 3, 7, 4),  # 前面
        (1, 2, 6, 5),  # 后面
        (1, 5, 4, 0),  # 右面
        (2, 3, 6, 7),  # 左面
        (4, 5, 6, 7)   # 顶面
    ]

    # 创建3D图形
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')

    # 绘制长方体的面
    for face in faces:
        polygon = [vertices[index] for index in face]
        face_collection = Poly3DCollection([polygon], facecolors='b', linewidths=1, edgecolors='k', alpha=.25)
        ax.add_collection3d(face_collection)

    # 设置坐标轴范围
    ax.set_xlim([0, length])
    ax.set_ylim([0, width])
    ax.set_zlim([0, height])

    # 显示图形
    plt.show()

# 调用函数绘制长方体,指定长、宽和高
draw_cuboid(3, 4, 5)

三、代码分析

1.导入matplotlib.pyplot模块,并给它起了个简短的别名plt。同时从mpl_toolkits.mplot3d.art3d导入Poly3DCollection,这个类用于绘制3D多边形集合。

2-3. 定义了一个名为draw_cuboid的函数,该函数接受length(长度)、width(宽度)和height(高度)三个参数,用于定义长方体的尺寸。

5-12. 在draw_cuboid函数内部,定义了一个名为vertices的列表,包含了长方体的8个顶点的坐标。这些顶点按照在空间中的相对位置被编号和列出。

14-19. 定义了一个名为faces的列表,包含了长方体的6个面。每个面由两个三角形组成,每组三角形由顶点的索引定义。

21-23. 创建一个新的matplotlib图形,并添加一个3D坐标轴。

25-33. 遍历faces列表中的每个面。对于每个面,提取构成该面的三角形的顶点索引,然后根据这些索引从vertices列表中获取顶点坐标。使用这些坐标创建多边形,并将其添加到Poly3DCollection中。

35-38. 设置3D坐标轴的显示范围,分别对应长方体的长度、宽度和高度。

40.调用plt.show()来显示图形。

42-44. 调用draw_cuboid函数来绘制长方体,指定长为3,宽为4,高为5。

代码中使用的Poly3DCollection对象face_collection设置了以下属性:
facecolors: 多边形面的颜色,这里是’b’,即蓝色。
linewidths: 多边形边缘的线宽。
edgecolors: 多边形边缘的颜色,这里是’k’,即黑色。
alpha: 设置多边形的透明度。


四、效果展示

长方体

总结

以上就是今天要讲的内容,运行这段代码会弹出一个窗口,显示一个3D长方体,长方体的每个面都是半透明的蓝色,边缘是黑色。坐标轴显示了长方体的尺寸和位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃饭团的饭桶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值