Python 三维打印:为什么坐标参数作为二维数组输入?

Python 三维打印:为什么坐标参数作为二维数组输入?,python,matplotlib,mplot3d,Python,Matplotlib,Mplot3d,mplot3d函数plot_surface要求将定义曲面的点的坐标输入为三个2D数组,X、Y、Z。下面是一个工作示例,演示了这些数组的构造。我用球坐标表示x,y,z坐标,球坐标由角度u和v参数化 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection = '3

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

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)这是正确的吗

我写的许多函数都是用一个参数来构造真实的绘图,这个参数是一个三元组列表,正是上面三元组的形式;i、 e.
点=[[x1,y1,z1],[x2,y2,z2],…,[xn,yn,zn]
。我预计该输入将被
plot\u surface
接受,但事实并非如此。因此,我发现自己需要相当频繁地在这两种表示之间进行转换,例如通过

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

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

曲面图可能绘制为三角形网格。通过一个二维点数组,可以清楚地知道每个三角形中应该包括哪些点(可能是
[i][j]-[i+1][j]-[i][j+1]
[i][j+1]-[i+1][j]-[i+1][j+1]

根据“线框图”部分判断,它似乎更像是绘制为矩形网格。