From 3afdf460738dacf87df6452aed6ac247dffd54f5 Mon Sep 17 00:00:00 2001 From: matthewtam17 Date: Thu, 9 Dec 2021 12:33:53 +0000 Subject: [PATCH 1/2] Boids: Split into multiple functions & define variables --- boids/boids.py | 60 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/boids/boids.py b/boids/boids.py index 49e8f69..929339d 100644 --- a/boids/boids.py +++ b/boids/boids.py @@ -10,34 +10,54 @@ import random -boids_x=[random.uniform(-450,50.0) for x in range(50)] -boids_y=[random.uniform(300.0,600.0) for x in range(50)] -boid_x_velocities=[random.uniform(0,10.0) for x in range(50)] -boid_y_velocities=[random.uniform(-20.0,20.0) for x in range(50)] -boids=(boids_x,boids_y,boid_x_velocities,boid_y_velocities) - -def update_boids(boids): - xs,ys,xvs,yvs=boids + + +def update_boids(xs,ys,xvs,yvs): + max_iteration = len(xs) # Fly towards the middle - for i in range(len(xs)): - for j in range(len(xs)): + fly_middle(xs,ys,xvs,yvs,max_iteration) + # Fly away from nearby boids + fly_away(xs,ys,xvs,yvs,max_iteration) + # Try to match speed with nearby boids + match_speed(xs,ys,xvs,yvs,max_iteration) + # Move according to velocities + move(xs,ys,xvs,yvs,max_iteration) + + +def fly_middle(xs,ys,xvs,yvs,max_iteration): + for i in range(max_iteration): + for j in range(max_iteration): xvs[i]=xvs[i]+(xs[j]-xs[i])*0.01/len(xs) - for i in range(len(xs)): - for j in range(len(xs)): + for i in range(max_iteration): + for j in range(max_iteration): yvs[i]=yvs[i]+(ys[j]-ys[i])*0.01/len(xs) - # Fly away from nearby boids - for i in range(len(xs)): - for j in range(len(xs)): + +def fly_away(xs,ys,xvs,yvs,max_iteration): + for i in range(max_iteration): + for j in range(max_iteration): if (xs[j]-xs[i])**2 + (ys[j]-ys[i])**2 < 100: xvs[i]=xvs[i]+(xs[i]-xs[j]) yvs[i]=yvs[i]+(ys[i]-ys[j]) - # Try to match speed with nearby boids - for i in range(len(xs)): - for j in range(len(xs)): +def match_speed(xs,ys,xvs,yvs,max_iteration): + for i in range(max_iteration): + for j in range(max_iteration): if (xs[j]-xs[i])**2 + (ys[j]-ys[i])**2 < 10000: xvs[i]=xvs[i]+(xvs[j]-xvs[i])*0.125/len(xs) yvs[i]=yvs[i]+(yvs[j]-yvs[i])*0.125/len(xs) - # Move according to velocities - for i in range(len(xs)): +def move(xs,ys,xvs,yvs,max_iteration): + for i in range(max_iteration): xs[i]=xs[i]+xvs[i] ys[i]=ys[i]+yvs[i] + + + +def create_number_range(lower_bound,upper_bound,max_number): + return [random.uniform(lower_bound,upper_bound) for x in range(max_number)] + +if __name__ == "__main__": + number_range = 50 + boids_x = create_number_range(-450,50.0,number_range) + boids_y = create_number_range(300.0,600.0,number_range) + boid_x_velocities = create_number_range(0,10.0,number_range) + boid_y_velocities = create_number_range(-20.0,20.0,number_range) + boids= update_boids(boids_x,boids_y,boid_x_velocities,boid_y_velocities) \ No newline at end of file From 4c794b176aaeb836205b3cad202c33f2094d72cd Mon Sep 17 00:00:00 2001 From: matthewtam17 Date: Thu, 9 Dec 2021 12:51:04 +0000 Subject: [PATCH 2/2] Changes to comments for functions --- boids/boids.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/boids/boids.py b/boids/boids.py index 929339d..85202f3 100644 --- a/boids/boids.py +++ b/boids/boids.py @@ -14,17 +14,14 @@ def update_boids(xs,ys,xvs,yvs): max_iteration = len(xs) - # Fly towards the middle fly_middle(xs,ys,xvs,yvs,max_iteration) - # Fly away from nearby boids fly_away(xs,ys,xvs,yvs,max_iteration) - # Try to match speed with nearby boids match_speed(xs,ys,xvs,yvs,max_iteration) - # Move according to velocities move(xs,ys,xvs,yvs,max_iteration) def fly_middle(xs,ys,xvs,yvs,max_iteration): + """Fly towards the middle""" for i in range(max_iteration): for j in range(max_iteration): xvs[i]=xvs[i]+(xs[j]-xs[i])*0.01/len(xs) @@ -33,18 +30,21 @@ def fly_middle(xs,ys,xvs,yvs,max_iteration): yvs[i]=yvs[i]+(ys[j]-ys[i])*0.01/len(xs) def fly_away(xs,ys,xvs,yvs,max_iteration): + """Fly away from nearby boids""" for i in range(max_iteration): for j in range(max_iteration): if (xs[j]-xs[i])**2 + (ys[j]-ys[i])**2 < 100: xvs[i]=xvs[i]+(xs[i]-xs[j]) yvs[i]=yvs[i]+(ys[i]-ys[j]) def match_speed(xs,ys,xvs,yvs,max_iteration): + """Try to match speed with nearby boids""" for i in range(max_iteration): for j in range(max_iteration): if (xs[j]-xs[i])**2 + (ys[j]-ys[i])**2 < 10000: xvs[i]=xvs[i]+(xvs[j]-xvs[i])*0.125/len(xs) yvs[i]=yvs[i]+(yvs[j]-yvs[i])*0.125/len(xs) def move(xs,ys,xvs,yvs,max_iteration): + """Move according to velocities""" for i in range(max_iteration): xs[i]=xs[i]+xvs[i] ys[i]=ys[i]+yvs[i]