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



我正在尝试用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)

问题是:

  • 你没有传递任何id数据到你的函数,只是索引element_1element_2。所以calculate_distance不知道
  • 即使你在传递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)

相关内容

  • 没有找到相关文章

最新更新