如何解决在python中绘制具有定义原点的3D隐式函数
我正在尝试绘制多个相互紧密接触的不规则粒子。但是,当我尝试指定这些粒子的起源时遇到了一个问题。作为参考,我试图绘制 this equation, ,其中所有常量都定义为参数,x0、y0 和 z0 是原点。当我将原点设置为 (0,0) 时,我的代码运行良好,但是,一旦我更改它,它就不起作用。
我尝试使用 mayavi 的轮廓 3D 函数绘制这个隐函数 F(x,y,z) = 0。粒子非常小,所以我首先定义了 -0.005 和 +0.005 之间的点。
df = pd.DataFrame(data={
'xp': [0.002131,0.002411],'yp': [0.002411,0.011152],'zp': [0.472552,0.503153],})
@mlab.animate()
def anim():
for i in range(len(df.xp)):
x,z = np.ogrid[-0.005:0.005:100j,-0.005:0.005:100j,-0.005:0.005:100j]
F_r = "the big long equation"
# For this example,lets just use spheres #
r = 1
F_r = (x2-df.xp.iloc[i])**2 + (y-df.yp.iloc[i])**2 + (z-df.zp.iloc[i])**2 - r**2
mlab.contour3d(F_r,contours = [0])
yield
anim()
mlab.show()
当我定义 x、y 和 z 的域时,我相信我的代码出错了。当我引入 x0、y0 和 z0 时,粒子可能会超出范围。因此,我尝试将网格点定义为 x0-A:x0+A:100j,其中 A 为 0.005。
x,z = np.ogrid[-df.xp.iloc[i]-A:df.xp.iloc[i]+A:100j,-df.yp.iloc[i]-A:df.yp.iloc[i]+A:100j,-df.zp.iloc[i]-A:df.xp.iloc[i]+A:100j]
但是,我的代码仍然不起作用。如果我将原点设置为 (0,0),则所有粒子都会相互叠加。基本上,我想知道如何在具有特定来源的 python 中绘制隐式 3D 函数。我并不完全打算使用 mayavi,所以如果有人知道更好的东西,我会很乐意尝试一下。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。