Module « scipy.spatial »
Classe « Delaunay »
Informations générales
Héritage
builtins.object
_QhullUser
Delaunay
Définition
class Delaunay(_QhullUser):
Description [extrait de Delaunay.__doc__]
Delaunay(points, furthest_site=False, incremental=False, qhull_options=None)
Delaunay tessellation in N dimensions.
.. versionadded:: 0.9
Parameters
----------
points : ndarray of floats, shape (npoints, ndim)
Coordinates of points to triangulate
furthest_site : bool, optional
Whether to compute a furthest-site Delaunay triangulation.
Default: False
.. versionadded:: 0.12.0
incremental : bool, optional
Allow adding new points incrementally. This takes up some additional
resources.
qhull_options : str, optional
Additional options to pass to Qhull. See Qhull manual for
details. Option "Qt" is always enabled.
Default:"Qbb Qc Qz Qx Q12" for ndim > 4 and "Qbb Qc Qz Q12" otherwise.
Incremental mode omits "Qz".
.. versionadded:: 0.12.0
Attributes
----------
points : ndarray of double, shape (npoints, ndim)
Coordinates of input points.
simplices : ndarray of ints, shape (nsimplex, ndim+1)
Indices of the points forming the simplices in the triangulation.
For 2-D, the points are oriented counterclockwise.
neighbors : ndarray of ints, shape (nsimplex, ndim+1)
Indices of neighbor simplices for each simplex.
The kth neighbor is opposite to the kth vertex.
For simplices at the boundary, -1 denotes no neighbor.
equations : ndarray of double, shape (nsimplex, ndim+2)
[normal, offset] forming the hyperplane equation of the facet
on the paraboloid
(see `Qhull documentation <http://www.qhull.org/>`__ for more).
paraboloid_scale, paraboloid_shift : float
Scale and shift for the extra paraboloid dimension
(see `Qhull documentation <http://www.qhull.org/>`__ for more).
transform : ndarray of double, shape (nsimplex, ndim+1, ndim)
Affine transform from ``x`` to the barycentric coordinates ``c``.
This is defined by::
T c = x - r
At vertex ``j``, ``c_j = 1`` and the other coordinates zero.
For simplex ``i``, ``transform[i,:ndim,:ndim]`` contains
inverse of the matrix ``T``, and ``transform[i,ndim,:]``
contains the vector ``r``.
If the simplex is degenerate or nearly degenerate, its
barycentric transform contains NaNs.
vertex_to_simplex : ndarray of int, shape (npoints,)
Lookup array, from a vertex, to some simplex which it is a part of.
If qhull option "Qc" was not specified, the list will contain -1
for points that are not vertices of the tessellation.
convex_hull : ndarray of int, shape (nfaces, ndim)
Vertices of facets forming the convex hull of the point set.
The array contains the indices of the points belonging to
the (N-1)-dimensional facets that form the convex hull
of the triangulation.
.. note::
Computing convex hulls via the Delaunay triangulation is
inefficient and subject to increased numerical instability.
Use `ConvexHull` instead.
coplanar : ndarray of int, shape (ncoplanar, 3)
Indices of coplanar points and the corresponding indices of
the nearest facet and the nearest vertex. Coplanar
points are input points which were *not* included in the
triangulation due to numerical precision issues.
If option "Qc" is not specified, this list is not computed.
.. versionadded:: 0.12.0
vertices
Same as `simplices`, but deprecated.
vertex_neighbor_vertices : tuple of two ndarrays of int; (indptr, indices)
Neighboring vertices of vertices. The indices of neighboring
vertices of vertex `k` are ``indices[indptr[k]:indptr[k+1]]``.
furthest_site
True if this was a furthest site triangulation and False if not.
.. versionadded:: 1.4.0
Raises
------
QhullError
Raised when Qhull encounters an error condition, such as
geometrical degeneracy when options to resolve are not enabled.
ValueError
Raised if an incompatible array is given as input.
Notes
-----
The tessellation is computed using the Qhull library
`Qhull library <http://www.qhull.org/>`__.
.. note::
Unless you pass in the Qhull option "QJ", Qhull does not
guarantee that each input point appears as a vertex in the
Delaunay triangulation. Omitted points are listed in the
`coplanar` attribute.
Examples
--------
Triangulation of a set of points:
>>> points = np.array([[0, 0], [0, 1.1], [1, 0], [1, 1]])
>>> from scipy.spatial import Delaunay
>>> tri = Delaunay(points)
We can plot it:
>>> import matplotlib.pyplot as plt
>>> plt.triplot(points[:,0], points[:,1], tri.simplices)
>>> plt.plot(points[:,0], points[:,1], 'o')
>>> plt.show()
Point indices and coordinates for the two triangles forming the
triangulation:
>>> tri.simplices
array([[2, 3, 0], # may vary
[3, 1, 0]], dtype=int32)
Note that depending on how rounding errors go, the simplices may
be in a different order than above.
>>> points[tri.simplices]
array([[[ 1. , 0. ], # may vary
[ 1. , 1. ],
[ 0. , 0. ]],
[[ 1. , 1. ],
[ 0. , 1.1],
[ 0. , 0. ]]])
Triangle 0 is the only neighbor of triangle 1, and it's opposite to
vertex 1 of triangle 1:
>>> tri.neighbors[1]
array([-1, 0, -1], dtype=int32)
>>> points[tri.simplices[1,1]]
array([ 0. , 1.1])
We can find out which triangle points are in:
>>> p = np.array([(0.1, 0.2), (1.5, 0.5), (0.5, 1.05)])
>>> tri.find_simplex(p)
array([ 1, -1, 1], dtype=int32)
The returned integers in the array are the indices of the simplex the
corresponding point is in. If -1 is returned, the point is in no simplex.
Be aware that the shortcut in the following example only works corretcly
for valid points as invalid points result in -1 which is itself a valid
index for the last simplex in the list.
>>> p_valids = np.array([(0.1, 0.2), (0.5, 1.05)])
>>> tri.simplices[tri.find_simplex(p_valids)]
array([[3, 1, 0], # may vary
[3, 1, 0]], dtype=int32)
We can also compute barycentric coordinates in triangle 1 for
these points:
>>> b = tri.transform[1,:2].dot(np.transpose(p - tri.transform[1,2]))
>>> np.c_[np.transpose(b), 1 - b.sum(axis=0)]
array([[ 0.1 , 0.09090909, 0.80909091],
[ 1.5 , -0.90909091, 0.40909091],
[ 0.5 , 0.5 , 0. ]])
The coordinates for the first point are all positive, meaning it
is indeed inside the triangle. The third point is on a vertex,
hence its null third coordinate.
Constructeur(s)
Liste des propriétés
convex_hull | |
points | |
transform | |
vertex_neighbor_vertices | |
vertex_to_simplex | |
Liste des opérateurs
Opérateurs hérités de la classe object
__eq__,
__ge__,
__gt__,
__le__,
__lt__,
__ne__
Liste des méthodes
Toutes les méthodes
Méthodes d'instance
Méthodes statiques
Méthodes dépréciées
Méthodes héritées de la classe _QhullUser
__del__, __init_subclass__, __subclasshook__, close
Méthodes héritées de la classe object
__delattr__,
__dir__,
__format__,
__getattribute__,
__hash__,
__reduce__,
__reduce_ex__,
__repr__,
__setattr__,
__sizeof__,
__str__
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :