在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...