python中的Boids;计算两个boid之间的距离

2024-04-19 02:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python来编程鸟类在飞行中的行为。我还没有发现太多,但目前我还停留在定义两个boid之间距离的函数上。它必须用公式(a,b)=sqrt((a_x-b_x)^2+(a_y-b_y)^2)),其中a和b是两个向量,我必须计算它们之间的距离,a_x和b u 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)

Tags: ofinposforlenrangerandomuniform
1条回答
网友
1楼 · 发布于 2024-04-19 02:15:42

问题是:

  • 您没有将任何boid数据传递到函数中,只是 索引element_1和{}。所以calculate_distance不知道 任何关于疖子的事。在
  • 即使您正在传递boid数据,您也将空列表分配给a和{},这意味着循环的内部永远不会执行。在

你想要这样的东西:

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

然后呢

^{pr2}$

相关问题 更多 >