如何用 sympy 绘制隐式 3D 表面?
How draw implict 3D surface with sympy?
我尝试用sympy
画x**2 + y**3 = z**2
,但我不知道怎么画。
我用了plot3d(x**2 + y**3-z**2)
,但是一点用都没有,请问有人知道怎么做吗?
遗憾的是,Sympy 不支持 3d 隐式绘图。但是,sage
does,虽然我记得它是一个非常重的安装模块。
或者,如果您使用的是 Jupyter Notebook,则可以使用 K3D-Jupyter which is capable of plotting implicit surfaces。让我们看看如何绘制曲面:
import k3d
import numpy as np
r = 5
zmin, zmax = -r, r
xmin, xmax = -r, r
ymin, ymax = -r, r
Nx, Ny, Nz = 100, 100, 100
x = np.linspace(xmin, xmax, Nx, dtype=np.float32)
y = np.linspace(ymin, ymax, Ny, dtype=np.float32)
z = np.linspace(zmin, zmax, Nz, dtype=np.float32)
x, y, z = np.meshgrid(x, y, z, indexing='ij')
p = x**2 + y**3 - z**2
plot = k3d.plot()
plt_iso = k3d.marching_cubes(p, compression_level=9, xmin=xmin, xmax=xmax,
ymin=ymin, ymax=ymax,
zmin=zmin, zmax=zmax, level=0.0,
flat_shading=False)
plot += plt_iso
plot.display()
我尝试用sympy
画x**2 + y**3 = z**2
,但我不知道怎么画。
我用了plot3d(x**2 + y**3-z**2)
,但是一点用都没有,请问有人知道怎么做吗?
遗憾的是,Sympy 不支持 3d 隐式绘图。但是,sage
does,虽然我记得它是一个非常重的安装模块。
或者,如果您使用的是 Jupyter Notebook,则可以使用 K3D-Jupyter which is capable of plotting implicit surfaces。让我们看看如何绘制曲面:
import k3d
import numpy as np
r = 5
zmin, zmax = -r, r
xmin, xmax = -r, r
ymin, ymax = -r, r
Nx, Ny, Nz = 100, 100, 100
x = np.linspace(xmin, xmax, Nx, dtype=np.float32)
y = np.linspace(ymin, ymax, Ny, dtype=np.float32)
z = np.linspace(zmin, zmax, Nz, dtype=np.float32)
x, y, z = np.meshgrid(x, y, z, indexing='ij')
p = x**2 + y**3 - z**2
plot = k3d.plot()
plt_iso = k3d.marching_cubes(p, compression_level=9, xmin=xmin, xmax=xmax,
ymin=ymin, ymax=ymax,
zmin=zmin, zmax=zmax, level=0.0,
flat_shading=False)
plot += plt_iso
plot.display()