2

おそらく単純な問題で立ち往生していますが、pyvistaのドキュメントを読んだ後でも答えを探しています。各セルがパラメトリック形状、つまりスーパートーラスとして定義されたメッシュになるグリッドをプロットしようとしています。pyvista の初期のバージョンでは、「自分の」スーパートーラスを次のように定義しました。

def supertorus(yScale, xScale, Height, InternalRadius, Vertical, Horizontal,
           deltaX=0, deltaY=0, deltaZ=0):

#  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 = pyvista.StructuredGrid(x + deltaX + 5, y + deltaY + 5, z + deltaZ)
return grid 

で操作しdeltaX、自分の選んだ場所にスーパートリを配置するdeltaYことができました。deltaZ残念ながら、このアプローチは効率的ではなかったため、PyVista が提供するスーパートロイダル メッシュ ( https://docs.pyvista.org/examples/00-load/create-parametric-geometric-objects.html?highlight=supertoroid ) を使用する予定です。x私の質問は、座標, y, で定義された場所に複数のメッシュ (スーパートリなど) を配置するにはどうすればよいzですか?

4

1 に答える 1