pyvista.DataSet.find_closest_cell#
- DataSet.find_closest_cell(point: ndarray[Any, dtype[number]] | Sequence[int | float] | Sequence[ndarray[Any, dtype[number]] | Sequence[int | float]], return_closest_point: bool = False) int | ndarray | Tuple[int | ndarray, ndarray] [ソース]#
このメッシュ内の指定したポイントに最も近いセルのインデックスを検索します.
- パラメータ:
- point
Vector
|Matrix
照会する点の座標(長さ3),または形状
(n, 3)
のn
点のnumpy.ndarray
配列です.- return_closest_pointbool, default:
False
True
の場合,メッシュセル内でその点に最も近い点を返します. これは必ずしもメッシュ上の最も近いノーダルポイントであるとは限りません. デフォルトはFalse
です.
- point
- 戻り値:
int
ornumpy.ndarray
指定した点(複数可)に最も近い,このメッシュ内のセルのインデックスです.
バージョン 0.35.0 で変更:
(1, 3)
形式の入力は(1,)
形式のnumpy.ndarray
を返すようになりました.numpy.ndarray
与えられた点(複数可)に最も近い,メッシュのセル内にある点です. これは
return_closest_point=True
の場合にのみ返されます.バージョン 0.35.0 で変更:
(1, 3)
の形状の入力は,同じ形状のnumpy.ndarray
を返すようになりました.
警告
このメソッドは,ポイントに
numpy.inf
やnumpy.nan
といった値が含まれていても,有効なセルインデックスを返すことがあります.参考
例
原点を中心とした球面上で,点
[0.1, 0.2, 0.3]
に最も近いセルを探します.>>> import pyvista as pv >>> mesh = pv.Sphere() >>> point = [0.1, 0.2, 0.3] >>> index = mesh.find_closest_cell(point) >>> index 338
このセルが実際に
[0.1, 0.2, 0.3]
に最も近いことを確認してください.>>> import numpy as np >>> cell_centers = mesh.cell_centers() >>> relative_position = cell_centers.points - point >>> distance = np.linalg.norm(relative_position, axis=1) >>> np.argmin(distance) 338
原点を中心としたいくつかのランダムな点に最も近いセルを求めます.
>>> points = 2 * np.random.random((5000, 3)) - 1 >>> indices = mesh.find_closest_cell(points) >>> indices.shape (5000,)
最も近いセルについて,与えられた点に最も近いセル内の点を求めよ. 長方形は単位正方形で,1つのセルと,法線
z
とz=0
の平面上の角にある4つの節点からなる. セル内の最も近い点は,通常,節点にはない.>>> unit_square = pv.Rectangle() >>> index, closest_point = unit_square.find_closest_cell( ... [0.25, 0.25, 0.5], return_closest_point=True ... ) >>> closest_point array([0.25, 0.25, 0. ])
しかし,最も近い点は,その点のインデックスを返さないが,ノーダル点であることができる. もしインデックスに最も近いノーダルポイントを取得したい場合は,
DataSet.find_closest_point()
を参照してください.>>> index, closest_point = unit_square.find_closest_cell( ... [1.0, 1.0, 0.5], return_closest_point=True ... ) >>> closest_point array([1., 1., 0.])