2016-11-24 24 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

相关问题