帮我写一个确定voronoi图中某点所在区域的代码
时间: 2023-10-01 20:04:54 浏览: 46
以下是Python的实现代码:
```python
import numpy as np
from scipy.spatial import Voronoi, voronoi_plot_2d
# 生成随机点
points = np.random.rand(30, 2)
# 计算Voronoi图
vor = Voronoi(points)
# 给定一个点
query_point = np.array([0.5, 0.5])
# 找到该点所在的Voronoi区域
region_index = vor.point_region[np.argmin(np.sum((vor.points - query_point)**2, axis=1))]
region = vor.regions[region_index]
# 去除无限远点
if -1 in region:
region.remove(-1)
# 筛选出Voronoi图中的顶点
vertices = np.array([vor.vertices[i] for i in region])
# 绘制Voronoi图和查询点所在区域
fig = voronoi_plot_2d(vor)
plt.plot(query_point[0], query_point[1], 'ro')
plt.fill(vertices[:, 0], vertices[:, 1], alpha=0.3)
plt.show()
```
首先,我们使用`numpy`模块生成一组随机点,然后使用`scipy.spatial`模块计算它们的Voronoi图。接着,给定一个查询点,我们可以使用`np.argmin()`函数找到其离哪个Voronoi点最近,从而得到该点所在的Voronoi区域的索引。然后,我们可以根据该区域的顶点坐标绘制出该区域的多边形。注意,由于Voronoi图中存在无限远点,我们需要将其从区域顶点中去除。最后,我们使用`voronoi_plot_2d()`函数绘制出整个Voronoi图和查询点所在区域。