gpt4 book ai didi

python - python 中的 Boids;计算两个主体之间的距离

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:43 24 4
gpt4 key购买 nike

我正在尝试用 Python 编写鸟类飞行行为的程序。我还没有找到太多,但目前我停留在定义两个群体之间距离的函数上。必须使用公式 (a,b) = sqrt( (a_x - b_x)^2 + (a_y - b_y)^2) ) 进行计算,其中 a 和 b 是我必须计算其间距离的两个向量, a_x 和 b_x 是向量的 x 分量,a_y 和 b_y 是 y 分量。我收到有关公式中索引的错误。我尝试过多种方法来解决,但我就是不知道该怎么做......

这是我到目前为止所得到的。我对编程非常陌生,所以我只知道基础知识,我不确定我所掌握的其余内容是否可以。;

WIDTH = 1000            # WIDTH OF SCREEN IN PIXELS
HEIGHT = 500 # HEIGHT OF SCREEN IN PIXELS
BOIDS = 20 # NUMBER OF BOIDS IN SIMULATION
SPEED_LIMIT = 500 # FOR BOID VELOCITY
BOID_EYESIGHT = 50 # HOW FAR A BOID CAN LOOK
WALL = 50 # FROM SIDE IN PIXELS
WALL_FORCE = 100 # ACCELERATION PER MOVE


from math import sqrt
import random
X = 0
Y = 1
VX = 2
VY = 3

def calculate_distance(a,b):
a = []
b = []
for x in range (len(a)):
for y in range (len(b)):
distance = sqrt((a[X] - b[X])**2 + (a[Y] - b[Y])**2)
return distance


boids = []

for i in range(BOIDS):
b_pos_x = random.uniform(0,WIDTH)
b_pos_y = random.uniform(0,HEIGHT)
b_vel_x = random.uniform(-100,100)
b_vel_y = random.uniform(-100,100)
b = [b_pos_x, b_pos_y, b_vel_x, b_vel_y]

boids.append(b)

for element_1 in range(len(boids)):
for element_2 in range(len(boids)):
distance = calculate_distance(element_1,element_2)

最佳答案

问题是:

  • 您没有将任何 boid 数据传递到您的函数中,只是将索引 element_1element_2。所以 calculate_distance 不知道有关 boids 的任何信息。
  • 即使您传入 boid 数据,您也会将空列表分配给 ab ,这意味着循环内部永远不会执行。

你想要这样的东西:

for element_1 in range(len(boids)):
for element_2 in range(len(boids)):
distance = calculate_distance(boids[element_1],boids[element_2])

然后

def calculate_distance(a,b):
return sqrt((a[0] - b[0])**2 + (a[1] - b[1])**2)

关于python - python 中的 Boids;计算两个主体之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com