【问题标题】:How to draw a 3D square as per user's input in Python?如何根据用户在 Python 中的输入绘制 3D 正方形?
【发布时间】:2021-02-05 10:14:03
【问题描述】:

我想用 Python 根据用户输入的 x、y、z 坐标绘制一个 3D 正方形,但我不知道如何绘制它们!我在 StackOverflow 和 google 上查看了其他相关问题,但找不到正确的信息。

这里是示例坐标:

[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [0, 0, 1], [1, 0, 1], [1, 1, 1], [0, 1, 1]]

需要它看起来像这样,根据用户的输入在 2D 页面上绘制一个立方体

谢谢!

【问题讨论】:

  • 我们可以使用乌龟吗?

标签: python 3d python-turtle


【解决方案1】:

您正在寻找这样的东西吗?

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection
import matplotlib.pyplot as plt

points = np.array([[-1, -1, -1],
                  [1, -1, -1 ],
                  [1, 1, -1],
                  [-1, 1, -1],
                  [-1, -1, 1],
                  [1, -1, 1 ],
                  [1, 1, 1],
                  [-1, 1, 1]])
# user input goes here
P = [
  [0 , 0 ,  1],
  [0,  1 , 0],
  [1,  0 , 0]
 ]

Z = np.zeros((8,3))
for i in range(8): Z[i,:] = np.dot(points[i,:],P)
Z = 10.0*Z

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

r = [-1,1]

X, Y = np.meshgrid(r, r)
# plot vertices
ax.scatter3D(Z[:, 0], Z[:, 1], Z[:, 2])

# list of sides' polygons of figure
verts = [[Z[0],Z[1],Z[2],Z[3]],
 [Z[4],Z[5],Z[6],Z[7]], 
 [Z[0],Z[1],Z[5],Z[4]], 
 [Z[2],Z[3],Z[7],Z[6]], 
 [Z[1],Z[2],Z[6],Z[5]],
 [Z[4],Z[7],Z[3],Z[0]]]

# plot sides
ax.add_collection3d(Poly3DCollection(verts, 
 facecolors='cyan', linewidths=1, edgecolors='r', alpha=.25))

ax.set_axis_off()

plt.savefig('spec',bbox_inches='tight',transparent=True, pad_inches=0)
plt.show()

【讨论】:

  • 哦,让我看看,如果你喜欢这篇文章,请点赞,让我在获得 50 声望后发表评论
  • 立方体是在图表中制作的,这真的很棒,但我希望将立方体绘制在 2D 页面上
  • 那么你首先要做的事情是什么,立方体的用途是什么,它会在哪里使用?
  • 所以程序要求x和y和z轴,程序根据用户的输入绘制一个3d立方体,也可以是像素。我编辑了问题,你可以有一个清晰的想法
  • 好的,我根据您的问题更新更新了代码,这将创建一个立方体,然后将其保存到图像文件中,然后您可以将其呈现给用户。
猜你喜欢
  • 1970-01-01
  • 2019-11-30
  • 2023-02-24
  • 2011-01-18
  • 2014-11-15
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
相关资源
最近更新 更多