<p>因为<code>vtkParametricSuperToroid</code>类没有包装在PyVista中,所以我找到了另一个解决方案,并使用<code>vista.StructuredGrid</code>类来定义超环面。我创建了一个函数<strong>supertorus</strong>,并用它来用PyVista的<code>vista.add_mesh()</code>绘制超环面。你知道吗</p>
<pre><code>import vista
import numpy as np
def supertorus(yScale, xScale, Height, InternalRadius, Vertical, Horizontal):
# initial range for values used in parametric equation
n = 100
u = np.linspace(-np.pi, np.pi, n)
t = np.linspace(-np.pi, np.pi, n)
u, t = np.meshgrid(u, t)
# a1: Y Scale <0, 2>
a1 = yScale
# a2: X Scale <0, 2>
a2 = xScale
# a3: Height <0, 5>
a3 = Height
# a4: Internal radius <0, 5>
a4 = InternalRadius
# e1: Vertical squareness <0.25, 1>
e1 = Vertical
# e2: Horizontal squareness <0.25, 1>
e2 = Horizontal
# Definition of parametric equation for supertorus
x = a1 * (a4 + np.sign(np.cos(u)) * np.abs(np.cos(u)) ** e1) *\
np.sign(np.cos(t)) * np.abs(np.cos(t)) ** e2
y = a2 * (a4 + np.sign(np.cos(u)) * np.abs(np.cos(u)) ** e1) *\
np.sign(np.sin(t)) * np.abs(np.sin(t)) ** e2
z = a3 * np.sign(np.sin(u)) * np.abs(np.sin(u)) ** e1
grid = vista.StructuredGrid(x, y, z)
return grid
</code></pre>