2016-11-24 70 views
-2

當我知道頂點的座標時,如何在三維中繪製一個錐體,錐體所在的矢量(作爲線條段的終點座標是否已知)以及matplotlib或任何其他python繪圖模塊中圓錐體的高度?沿着給定的矢量繪製一個帶有頂點,高度和角度信息的3D錐體matplotlib

我想什麼是最有幫助的,將是在matplotlib繪製隱式函數的一些指示。

我試過的方法是創建一個網格點(x,y和z),定義一個錐體方程,並檢查每個網格點是否滿足圓錐方程(因爲網格分辨率可能意味着它不會完全滿足方程,我檢查它是否滿足方程達到某種精度)。但是,我不確定如何在matplotlib中繪製這個隱式數據集。我試着寫出方程(其中包括x,y和z中的二次和線性項)作爲z中的二次項,求解z並用z和x和y表示曲面圖,但是這給了我一個平面而不是一個錐體。

這裏是我使用的代碼:

x = np.linspace(0,100,100) 
    y = np.linspace(0,100,100) 


    z = (-4823.7 + np.sqrt(abs((4823.7**2) - (4*(-240.185)*((-5692*y) - (240.185*np.multiply(x,x)) - (240.185*np.multiply(y,y)) - 57607.26))))/np.float(2*(-240.185))) 
    #print z 
    fig = plt.figure() 
    ax = fig.add_subplot(111, projection='3d') 
    x = np.arange(-50.0, 50, 1) 
    y = np.arange(-50.0, 50, 1) 
    X, Y = np.meshgrid(x, y) 
    ax.plot_surface(X, Y, z) 

    ax.set_xlabel('X Label') 
    ax.set_ylabel('Y Label') 
    ax.set_zlabel('Z Label') 
    plt.show() 
+1

在計算器上這裏的一般共識是,提問者需要顯示在解決一些努力這個問題本身。一方面,這意味着尋找可能的解決方案,並在問題中提及它們,明確指出它們不能解決問題的程度。另一方面,它意味着在解決問題的嘗試中顯示一些代碼。 – ImportanceOfBeingErnest

回答

1

嘗試用它:

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') 
x = np.arange(-50.0, 50, 1) 
y = np.arange(-50.0, 50, 1) 
X, Y = np.meshgrid(x, y) 
Z = (-4823.7 + np.sqrt(abs((4823.7 ** 2) - (4 * (-240.185) * ((-5692 * Y) - (240.185 * np.multiply(X, X)) 
                   - (240.185 * np.multiply(Y, Y)) - 57607.26))))/np.float(
    2 * (-240.185))) 

ax.plot_surface(X, Y, Z) 

ax.set_xlabel('X Label') 
ax.set_ylabel('Y Label') 
ax.set_zlabel('Z Label') 
plt.show() 

enter image description here