微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中绘制具有定义原点的3D隐式函数

如何解决在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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?