pyvista.DataSetFilters.compute_implicit_distance#

DataSetFilters.compute_implicit_distance(surface, inplace=False)[ソース]#

ポイントから表面までのインプリシット距離を計算します.

このフィルタは,このメッシュのすべての節点から指定されたサーフェスまでの暗黙の距離を計算します.この距離は, 'implicit_distance' という点配列として追加されます.

入力サーフェス形状の内側にあるこのメッシュのノードは負の距離を持ち,外側にあるノードは正の距離を持ちます.入力サーフェスと交差するノードの距離は0になります.

パラメータ:
surfacepyvista.DataSet

距離の計算に使用されるサーフェス.

inplacebool, default: False

もし True ならば,新しいスカラー配列がこのメッシュの point_data に追加され,変更されたメッシュが返されます.そうでなければ,このメッシュのコピーにスカラーフィールドが追加されたものが返されます.

戻り値:
pyvista.DataSet

データセット: point_data に含まれる 'implicit_distance' 配列を含みます.

球と平面上のすべての点間の距離を計算します.

>>> import pyvista as pv
>>> sphere = pv.Sphere(radius=0.35)
>>> plane = pv.Plane()
>>> _ = sphere.compute_implicit_distance(plane, inplace=True)
>>> dist = sphere['implicit_distance']
>>> type(dist)
<class 'pyvista.core.pyvista_ndarray.pyvista_ndarray'>

これらの距離をヒートマップとしてプロットします.平面より上の距離は正で,平面より下の距離は負であることに注意してください.

>>> pl = pv.Plotter()
>>> _ = pl.add_mesh(
...     sphere, scalars='implicit_distance', cmap='bwr'
... )
>>> _ = pl.add_mesh(plane, color='w', style='wireframe')
>>> pl.show()
../../../_images/pyvista-DataSetFilters-compute_implicit_distance-1_00_00.png

また、平面上のすべての点から球までの距離も計算することができます.

>>> _ = plane.compute_implicit_distance(sphere, inplace=True)

ここでも,これらの距離をヒートマップとしてプロットすることができます.球の内側の距離は負で,球の外側の距離は正であることに注意しましょう.

>>> pl = pv.Plotter()
>>> _ = pl.add_mesh(
...     plane,
...     scalars='implicit_distance',
...     cmap='bwr',
...     clim=[-0.35, 0.35],
... )
>>> _ = pl.add_mesh(sphere, color='w', style='wireframe')
>>> pl.show()
../../../_images/pyvista-DataSetFilters-compute_implicit_distance-1_01_00.png

このフィルターを使用したその他の例については, サーフェスを使用したクリップサーフェスメッシュをボクセル化する を参照してください.