You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在区域或多边形内生成近似等间距点,求Python实现方案

多边形内近似等距点生成Python实现方案

直接使用成熟的第三方库即可完成需求,无需手动实现底层算法,以下是可直接运行的代码示例:

依赖安装

执行以下命令安装所需依赖:

pip install numpy scipy shapely matplotlib

其中matplotlib为可视化可选依赖,不需要可以不装。

完整实现代码

import numpy as np
from scipy.spatial import poisson_disk_sample
from shapely.geometry import Polygon, Point
import matplotlib.pyplot as plt

# 1. 定义你的多边形,替换成你自己的多边形顶点坐标即可
# 示例为一个不规则四边形
polygon_vertices = [
    (0, 0),
    (10, 1),
    (8, 9),
    (1, 8)
]
polygon = Polygon(polygon_vertices)

# 2. 获取多边形包围盒范围
min_x, min_y, max_x, max_y = polygon.bounds
# 包围盒范围调整为scipy泊松采样的输入格式
bounds = [(min_x, max_x), (min_y, max_y)]

# 3. 生成泊松圆盘采样点,核心参数是点之间的最小距离r,可根据需求调整
# r越大点越稀疏,r越小点越密集
min_distance = 1.2
# 泊松采样生成的点天然满足两点之间距离不小于min_distance,即近似等距
points = poisson_disk_sample(bounds, r=min_distance)

# 4. 过滤出落在多边形内部的点
points_in_polygon = []
for p in points:
    if polygon.contains(Point(p)):
        points_in_polygon.append(p)
points_in_polygon = np.array(points_in_polygon)

# 以下为可视化可选代码
if __name__ == "__main__":
    # 绘制多边形
    poly_x, poly_y = polygon.exterior.xy
    plt.plot(poly_x, poly_y, c='black', label='多边形边界')
    # 绘制内部点
    plt.scatter(points_in_polygon[:, 0], points_in_polygon[:, 1], c='blue', s=10, label='内部等距点')
    plt.legend()
    plt.axis('equal')
    plt.show()

参数调整说明

  • 替换polygon_vertices的坐标值即可适配你自己的任意多边形区域
  • 修改min_distance参数即可调整点之间的间距,参数值就是两点之间允许的最小距离

内容的提问来源于stack exchange,提问作者Chau Loi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 20:45:07