gpt4 book ai didi

python - 3D 绘图 : why are coordinate arguments input as 2D arrays?

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:29 24 4
gpt4 key购买 nike

mplot3d 函数 plot_surface 要求将定义表面的点的坐标输入为三个二维数组 X、Y、Z。这是一个演示这些数组构造的工作示例。我用角度 u 和 v 参数化的球坐标表示 x、y、z 坐标。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

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

# generate the coordinates on the surface by parameterizing
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, 2 * np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))

ax.plot_surface(x, y, z)
plt.show()

我相信X,Y,Z表示的坐标恰好是所有三元组的集合[X[i,j], Y[i,j], Z[i,j]] 在 i 和 j 上建立索引。 (1) 这是正确的吗?

我为构建真实情节而编写的许多函数都采用三元组列表的参数,恰好采用上述三元组的形式;即 points = [[x1,y1,z1], [x2,y2,z2], ..., [xn, yn, zn]]。我预计此输入会被 plot_surface 接受,但事实并非如此。结果我发现自己需要相当频繁地在两种表示之间进行转换,例如通过

points = zip(*[x.flatten() for x in (X,Y,Z)])

我可以这样做,但我担心我也应该为我自己的函数使用二维数组格式。 (2) 除了易于编程构造这些数组之外,数组输入格式还有其他原因吗?例如,它的计算效率更高吗?

最佳答案

曲面图可能绘制为三角形网格。传递一个二维点数组可以明确每个三角形中应包含哪些点(可能是 [i][j]-[i​​+1][j]-[i​​][j+1][i][j+1]-[i+1][j]-[i​​+1][j+1]).

关于python - 3D 绘图 : why are coordinate arguments input as 2D arrays?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17532111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com