Python でボイドを使って飛行中の鳥の行動をプログラムしようとしています。私はまだ多くを見つけていませんが、現在、2つのボイド間の距離を定義する関数にこだわっています. 式 (a,b) = sqrt( (a_x - b_x)^2 + (a_y - b_y)^2) ) で計算する必要があります。ここで、a と b は、距離を計算する必要がある 2 つのベクトルです。 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)