是否可以使用 sympy 绘制隐式 3d 方程?
Is it possible to plot implicit 3d equation using sympy?
有没有办法使用 sympy 绘制 3 变量隐式方程。通过文档,它只支持隐式二维图。或者是否有任何其他选项可以使用 python 绘制 3d 图,其中方程可以是用户
的输入
我正在将我的评论变成答案。我建议使用 mayavi
和 contour3d
来完成这项任务。您始终可以将隐式函数重写为 f(x,y,z)=0
。对于我们有 x^2 + y^2 + z^2 = r^2
的球体,可以将其重写为 f(x,y,z) = x^2 + y^2 + z^2 - r^2 = 0
.
下面是一些例子
import numpy as np
from mayavi import mlab
mlab.clf()
x, y, z = np.mgrid[-3:3:50j, -3:3:50j, -3:3:50j]
# Plot a sphere of radius 1
values = x*x + y*y + z*z - np.sqrt(3)
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
# Plot a torus
R = 2
r = 1
values = (R - np.sqrt(x**2 + y**2))**2 + z**2 - r**2
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
# Plot a Scherk's second surface
x, y, z = np.mgrid[-4:4:100j, -4:4:100j, -8:8:100j]
values = np.sin(z) - np.sinh(x)*np.sinh(y)
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
mlab.show()
给出结果
球体:
环面:
Scherk 的第二个表面:
有没有办法使用 sympy 绘制 3 变量隐式方程。通过文档,它只支持隐式二维图。或者是否有任何其他选项可以使用 python 绘制 3d 图,其中方程可以是用户
的输入我正在将我的评论变成答案。我建议使用 mayavi
和 contour3d
来完成这项任务。您始终可以将隐式函数重写为 f(x,y,z)=0
。对于我们有 x^2 + y^2 + z^2 = r^2
的球体,可以将其重写为 f(x,y,z) = x^2 + y^2 + z^2 - r^2 = 0
.
下面是一些例子
import numpy as np
from mayavi import mlab
mlab.clf()
x, y, z = np.mgrid[-3:3:50j, -3:3:50j, -3:3:50j]
# Plot a sphere of radius 1
values = x*x + y*y + z*z - np.sqrt(3)
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
# Plot a torus
R = 2
r = 1
values = (R - np.sqrt(x**2 + y**2))**2 + z**2 - r**2
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
# Plot a Scherk's second surface
x, y, z = np.mgrid[-4:4:100j, -4:4:100j, -8:8:100j]
values = np.sin(z) - np.sinh(x)*np.sinh(y)
mlab.figure()
mlab.contour3d(x, y, z, values, contours=[0])
mlab.axes()
mlab.show()
给出结果
球体:
环面:
Scherk 的第二个表面: