【问题标题】:Plot a 3D cone with vertex, height and angle information, along a given vector, matplotlib沿着给定的向量 matplotlib 绘制具有顶点、高度和角度信息的 3D 圆锥
【发布时间】:2016-11-24 11:06:48
【问题描述】:

当我知道顶点的坐标、圆锥所在的向量(作为已知终点坐标的线段)和圆锥的高度时,如何在 matplotlib 中绘制 3 维圆锥或任何其他 python 绘图模块?

我想最有帮助的是一些关于在 matplotlib 中绘制隐式函数的说明。

我尝试的是创建一个点(x、y 和 z)网格,定义圆锥方程,并检查每个网格点是否满足圆锥方程(因为网格分辨率可能意味着它不会完全满足方程,我检查它是否满足方程达到一定的精度)。但是,我现在不确定如何在 matplotlib 中绘制这个隐式数据集。我尝试将方程(涉及 x、y 和 z 中的二次项和线性项)写成 z 中的二次项,求解 z 并根据 x 和 y 用 z 执行曲面图,但这给了我一个平面而不是一个圆锥体。

这是我使用的代码:

    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()

【问题讨论】:

  • StackOverflow 上的普遍共识是,提问者需要自己解决问题。一方面,这意味着寻找可能的解决方案,并在问题中提及它们,明确说明它们在多大程度上不能解决您的问题。另一方面,它意味着在尝试解决问题时显示一些代码。

标签: python matplotlib plot


【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多