Python Pyramid 3

I am new to 3d graphics. I just want to build a pyramid of 5 points and cut a plane through it. My problem is that I do not know how to fill in the parties.

points = np.array([[-1, -1, -1], [1, -1, -1 ], [1, 1, -1], [-1, 1, -1], [0, 0 , 1]]) fig = plt.figure() ax = fig.add_subplot(111, projection='3d') r = [-1,1] X, Y = np.meshgrid(r, r) ax.plot_surface(X,Y,-1, alpha=0.5) ax.plot_surface(X,Y,0.5, alpha=0.5, facecolors='r') ax.scatter3D(points[:, 0], points[:, 1], points[:, 2]) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show() 

Any help is appreciated.

+2
source share
1 answer

You must use polygons:

 from matplotlib import pyplot as plt from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection import numpy as np fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # vertices of a pyramid v = np.array([[-1, -1, -1], [1, -1, -1], [1, 1, -1], [-1, 1, -1], [0, 0, 1]]) ax.scatter3D(v[:, 0], v[:, 1], v[:, 2]) # generate list of sides' polygons of our pyramid verts = [ [v[0],v[1],v[4]], [v[0],v[3],v[4]], [v[2],v[1],v[4]], [v[2],v[3],v[4]], [v[0],v[1],v[2],v[3]]] # plot sides ax.add_collection3d(Poly3DCollection(verts, facecolors='cyan', linewidths=1, edgecolors='r', alpha=.25)) plt.show() 

enter image description here

+2
source

Source: https://habr.com/ru/post/1269432/


All Articles