face_adjacency_numpy

compas.topology.face_adjacency_numpy(xyz, faces)[source]

Construct an adjacency dictionary of the given faces, assuming that the faces have arbitrary orientation.

Parameters:
xyzsequence[[float, float, float] | compas.geometry.Point]

The coordinates of the face vertices.

facessequence[sequence[int]]

A list of faces with each face defined by a list of indices into the list of xyz coordinates.

Returns:
dict[int, list[int]]

For every face a list of neighbouring faces.

Notes

If the number of faces is larger than one hundred (100), this function uses Scipy’s cKDTree for limiting the search for neighbours to the immediate surroundings of any given face.

Examples

>>> vertices = [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [1.0, 1.0, 0.0], [0.0, 1.0, 1.0]]
>>> faces = [[0, 1, 2], [0, 3, 2]]
>>> face_adjacency_numpy(vertices, faces)
{0: [1], 1: [0]}