""" 寻找最短距离的点.py 本程序寻找一个点到多个点最小距离,然后到最小距离的点的索引号返回。 最后用turtle进行可视化。 """ import random import turtle import numpy as np def shortest_distance_index(onepoint,others): """ onepoint:一个点,如[(0,0)] others:另一些点,如[(10,10),(20,33),(12,48)] 返回到距离最近的点的others中的索引号 """ others = np.array(others) # 换成numpy数组 distances = np.sqrt(np.sum(np.asarray(onepoint - others) ** 2, axis=1)) # distances即为输入的数组;axis默认为None,即输入的数组为平坦数组(即reshape为一维数组), # axis=0为列向量输入,axis=1为行向量输入;如果提供out参数,则会插入输入数组当中。 index = np.argmin(distances, axis=None, out=None) return index point = np.array([(0,0)]) # 一个点,这里用原点 ps = [(random.randint(-300,300),random.randint(-300,300) ) for _ in range(10)]# 生成10个点 print(ps) i = shortest_distance_index(point,ps) print(i) turtle.setup(640,640) turtle.speed(0) turtle.delay(0) turtle.penup() for p in ps: turtle.goto(p) turtle.dot(10) turtle.goto(0,0) turtle.dot(10,'red') turtle.pendown() turtle.goto(ps[i]) turtle.done() # 本程序为在Python精灵模块中准备新增find_in_closest的预备测试程序。 # find_in_closest准备用来在下一个版本中寻找一个点到多个角色的最短距离,并且返回那个角色。 # Python精灵模块用最简单的代码创建小游戏小动画,用于教育目的。最新版安装方法: pip install sprites --upgrade
李兴球
李兴球的博客是Python创意编程原创博客
要发表评论,您必须先登录。
发表评论