#ifndef __BOID_H__ #define __BOID_H__ #include #include "vec.h" typedef struct { Vec pos, vel; int X,Y; int tail_lX, tail_lY, tail_rX, tail_rY, tail_X, tail_Y; XPoint shadow[4]; int wing_level; int onscreen; /* boolean */ int upstroke; /* boolean */ int perching; /* boolean */ int perch_timer; } _Boid, *Boid; int main(int argc, char **argv); void boid_perspective(Boid boid, int W, int H); int boid_isonscreen(Boid boid, int W, int H); void boid_move(Boid boid, Boid allboids[], int numboids, Vec real_center, Vec real_avgvel, int W, int H); Vec boid_perceive_center(Boid boid, Vec real_cent, int numboids); Vec boid_av_vel(Boid boid, Vec real_avgvel, int numboids); Vec boid_chill_out(Boid boid, Boid boids[], int numboids); void draw_boid(Boid boid, Pixmap freshmap); Boid new_boid(int W, int H); void OpenWindow(void); void SetupColormap(void); void SetupDisplay(void); void vec_add(Vec vec1, Vec vec2); void vec_clear(Vec vec); Vec vec_copy(Vec v1); void vec_diff(Vec vec1, Vec vec2, Vec vec3); void vec_limit(Vec vec, double lim); void vec_lshift(Vec vec, int n); double vec_rdist(Vec vec1, Vec vec2); void vec_sdiv(Vec vec, double scalar); void vec_setmag(Vec vec, double mag); void vec_smul(Vec vec, double scalar); Vec zero_vec(void); #endif /* __BOID_H__ */