繁体   English   中英

如何使用 Python 更改立方体的尺寸?

[英]How can I change the dimension of a cube with Python?

我做了下面是为了通过给出不同的 X、Y、Z 值来创建一个立方体,但是当我给出例如 (6,3,2) 时,我在 X 轴上没有收到 6 个块,在 Y 轴上没有收到 3 个块轴,Z 轴上有 2 个方块,但我收到了一个 6x6x4 的立方体,为什么?

import matplotlib.pyplot as plt
import numpy as np
def make(X,Y,Z):
     x, y, z = np.indices((X,Y,Z))
    cube2 = (x==0) & (y==0) & (z==0)
    for i in range (X):
         for j in range (Y):
             for k in range(Z):
              cube1 = (x==i) & (y==j) & (z==k)
              cube2 = cube2|cube1
          
    colors = np.ones(cube2.shape, dtype=object)
    from matplotlib import cm
    for i in range (X):
         for j in range (Y):
             for k in range(Z):
                 if 0<i<=3:
                     colors[i][j][k] = cm.gray(((i+j+k)/X),alpha=0.8)
                 elif 3<i<=6:
                     colors[i][j][k] = cm.winter(((i+j+k)/Y),alpha=0.8)
                 else:
                     colors[i][j][k] = cm.copper(((i+j+k)/Z),alpha=0.8)
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.voxels(cube2, facecolors=colors, edgecolor=None)

    plt.show()

make(6,3,2,)

我还需要你帮忙做点别的事情。 我根据代码创建了一条贝塞尔线。

#bezier line 
import numpy as np
import matplotlib.pyplot as plt
A = np.array([10,20])
B = np.array([15,8])
C = np.array([8,22])
A = A.reshape(2,1)
B = B.reshape(2,1)
C = C.reshape(2,1)
t = np.arange(0.0, 1.0, 0.1).reshape(1,-1)
P0 = A * t + (1 - t) * B
P1 = B * t + (1 - t) * C
Pfinal = P0 * t + (1 - t) * P1
x=np.transpose(Pfinal)
x1= x[:, 0]
print(x1)
plt.plot(x1)

是否可以对上述第一个代码执行此操作,以便选择不同的 colors 而不是我在 if 语句中所做的? 例如,在这条贝塞尔线右侧的 Z 轴上有 cm.winter colors,在左侧 cm.copper 或类似的东西。

您的代码会生成预期的图。 我看不出有什么问题。 这不是答案,而是向您展示我通过您的代码获得的 plot 的一种方式。 你要买什么?

make(6,3,2)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM