Python画3D

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python画3D相关的知识,希望对你有一定的参考价值。

 

lz


# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
#设置图表刻度等格式
from matplotlib.ticker import MultipleLocator, FormatStrFormatter 
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

#make_pic的内置函数,用来在图像里面不断添加立方体
def box(ax,x, y, z, dx, dy, dz, color='red'):
    xx = [x, x, x+dx, x+dx, x]
    yy = [y, y+dy, y+dy, y, y]
    kwargs = {'alpha': 1, 'color': color}
    ax.plot3D(xx, yy, [z]*5, **kwargs)#下底
    ax.plot3D(xx, yy, [z+dz]*5, **kwargs)#上底
    ax.plot3D([x, x], [y, y], [z, z+dz], **kwargs)
    ax.plot3D([x, x], [y+dy, y+dy], [z, z+dz], **kwargs)
    ax.plot3D([x+dx, x+dx], [y+dy, y+dy], [z, z+dz], **kwargs)
    ax.plot3D([x+dx, x+dx], [y, y], [z, z+dz], **kwargs)
    return ax

#显示图形的函数:Items = [[num[0],num[1],num[2],num[3],num[4],num[5],num[6]],]
#Items是N个列表的列表,里面的每个列表数据[放置点O三维坐标,长宽高,颜色]
def make_pic(Items):
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.xaxis.set_major_locator(MultipleLocator(50)) 
    ax.yaxis.set_major_locator(MultipleLocator(50)) 
    ax.zaxis.set_major_locator(MultipleLocator(50)) 
    for num in Items:
        box(ax,num[0],num[1],num[2],num[3],num[4],num[5],num[6])
    plt.title('Cube')
    plt.show()
    
#根据图显需要的数据,把尺寸数据生成绘图数据的函数
def make(O,C,color):
    data = [O[0],O[1],O[2],C[0],C[1],C[2],color]
    return data

#1.给定空间容器C      
#内容积为:长4.2x宽1.9x高1.8米
O = (0,0,0)           #原点坐标
C = (420,190,180)    #箱体长宽高
color = 'red'         #箱体颜色

#显示箱体
make_pic([make(O,C,color)]) #这个为直接显示箱体看下效果
show_num = [make(O,C,color)] #这个为后面组合显示时,把箱体显示数据添加到所有要显示的数据里面

#2.给定有限量个方体 1200个(60,40,50)的方体
B=[]
for num in range(0,1200):
    B.append((60,40,50))
#如果在后面的考虑不同方体的装箱时,方体大小存在差异,我们将优先按照体积大小降序排列,优先摆放大体积的
#因为按照模拟装箱的情况,当大箱子摆放后产生的可放置点,能在上方放置边长不大于或者大于小部分的物体,可选物体范围更大

#3.拟人化依次堆叠方体,假设这里不考虑方体朝向/重心/堆叠限制,如果有大小差异考虑方体最大悬空面积为30%
#第一个方体的位置从原点开始
color2='blue'
show_num.append(make(O,B[0],color2))
make_pic(show_num)#查看图显效果

 


 

以上是关于Python画3D的主要内容,如果未能解决你的问题,请参考以下文章

这是一篇用python画3D爱心的代码

python如何画三维图像?

python3的turtle画模仿3d星空,运动的恒星小宇宙

python 画3D的高斯曲线

Python画3D

python之画三维图像