2017-10-02 7 views
0

Est-ce que quelqu'un peut m'expliquer ou me montrer comment créer un polygone filaire 3D en utilisant des commandes de tracé de lignes 2D en Python? Je sais que j'ai besoin d'un ensemble de sommets et les relier pour être des lignes 2D et ensuite les tracer. Je ne suis pas complètement sûr de savoir comment le faire.Comment créer une maison filaire 3D dans PYTHON à l'aide de commandes de tracé de lignes 2D?

+0

Bienvenue sur stackoverflow. Vous voudriez probablement lire [demander] car vous étiez assez chanceux que quelqu'un ait pris le temps de répondre à votre question, ce qui n'est pas conforme aux directives. La prochaine fois que vous poserez la question, il serait bon d'inclure une description claire du problème à partir de laquelle vous comprenez clairement ce que vous avez essayé et à quel moment vous rencontrez le problème. – ImportanceOfBeingErnest

Répondre

1

Basé sur l'excellent answer pour diverses formes 3D, vous pouvez faire quelque chose comme,

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 
from itertools import product, combinations 


fig = plt.figure() 
ax = fig.gca(projection='3d') 
ax.set_aspect("equal") 

# draw cube 
r = [-1, 1] 
points = list(product(r, r, r)) 

#Add roof 
points.append([0., 1.5, -1.]) 
points.append([0., 1.5, 1.]) 

#Convert to array 
points = np.array(points) 

#Plot 
ax.scatter(points[:,0], points[:,1], points[:,2]) 
for s, e in combinations(points, 2): 
    #All diagonals will be greater than 2 
    if np.sum(np.abs(s-e)) <= 2: 
     ax.plot3D(*zip(s, e), color="k") 
plt.show() 

qui ressemble alors à cela,

enter image description here

+0

Bien, mais pourquoi le toit est-il sur le flanc? Ou est-ce le résultat d'une construction légère après un ouragan? ;-) – ImportanceOfBeingErnest