【发布时间】:2015-06-17 08:24:01
【问题描述】:
我正在寻找一个小程序,它将在给定参数 h 和 a 的情况下生成 spherical cap 的 3D 图。
任何帮助将不胜感激!
我从一个 matplotlib 示例开始绘制一个球体...
我想为 a 和 h 输入一个值,得到相应的球体半径,然后绘制一个高度为 h 和底半径为 a 的球冠。理想情况下,3d 图上的 z 轴和 x y 轴将对应于我输入的初始 a 和 h(只要我认为它具有几何意义?)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
def capRatio(r, a, h):
'''cap to sphere ratio'''
surface_cap = np.pi * (a**2 + h**2)
surface_sphere = 4.0 * np.pi * r**2
return surface_cap/surface_sphere
def findRadius(a, h):
"find radius if you have cap base radius a and height"
r = (a**2 + h**2) / (2*h)
return r
#choose a and h
a = 4
h = 3
r = findRadius(a,h)
p = capRatio(r, a, h) # Ratio of sphere to be plotted, could also be a function of a.
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, p*np.pi, 100)
x = r * np.outer(np.cos(u), np.sin(v))
y = r * np.outer(np.sin(u), np.sin(v))
z = r * np.outer(np.ones(np.size(u)), np.cos(v))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=4, cstride=4, alpha=0.3 , cmap= cm.winter)
plt.show()
【问题讨论】:
-
您的实际问题是什么?你有没有尝试过?
-
非常抱歉,网站新手!通过遵循 matplotlib 示例,我可以在主帖中添加一个球体,从概念上讲,我不确定如何从那里前进到仅绘制一个上限……或者这是否是正确的方法
标签: python matplotlib plot 3d geometry