[英]Multiply sphere parametric equation by a matrix in NumPy, Python
我有一個以這種方式定義的球體:
sigma, theta = np.mgrid[0:2*np.pi:60j, 0:np.pi:30j]
x = np.cos(sigma) * np.sin(theta)
y = np.sin(sigma) * np.sin(theta)
z = np.cos(theta)
我正在繪制如下所述的球體:
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(x, y, z, label='Unit sphere')
plt.show()
這按預期工作。 但是,我需要通過將其參數方程乘以 3x3 矩陣來將這個球體轉換為橢球體,生成如下:
A1 = np.random.uniform(-1,1,(3,3))
現在,從數學的角度來看,我非常清楚我正在尋找的是 x、y 和 z 方程的垂直向量,乘以矩陣乘法 (@) 與我的 3x3 變換矩陣。 但是,我不知道如何在 numpy 中對其進行編碼。 提前致謝。
您可以使用理解循環將變換矩陣與每組 x,y,z 相乘
原來的
ellipsoid = np.array([np.column_stack((x[i],y[i],z[i])) @ A1 for i in range(60)])
x_ellipsoid = ellipsoid [:,:,0]
y_ellipsoid = ellipsoid [:,:,1]
z_ellipsoid = ellipsoid [:,:,2]
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_surface(x_ellipsoid, y_ellipsoid, z_ellipsoid, label='ellipsoid ')
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.