簡體   English   中英

用NumPy,Python中的矩陣乘以球體參數方程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM