X-Git-Url: http://git.droids-corp.org/?p=aversive.git;a=blobdiff_plain;f=projects%2Fmicrob2010%2Fmainboard%2Fstrat_utils.c;h=9deba04c3619f9bb2baab1a335b3282d21f3e215;hp=33c1474ee5e995a7e6a52bfe26f266873a9ea566;hb=ad466314d3aff8f661654d4701b9d12fdeb7811f;hpb=a3ec2f79a4ed7b2148ede881e0685ddb6f141d82 diff --git a/projects/microb2010/mainboard/strat_utils.c b/projects/microb2010/mainboard/strat_utils.c index 33c1474..9deba04 100644 --- a/projects/microb2010/mainboard/strat_utils.c +++ b/projects/microb2010/mainboard/strat_utils.c @@ -68,6 +68,17 @@ int16_t distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2) return sqrt(x+y); } +/* return the distance between two points */ +int32_t quad_distance_between(int16_t x1, int16_t y1, int16_t x2, int16_t y2) +{ + int32_t x,y; + x = (x2-x1); + x = x*x; + y = (y2-y1); + y = y*y; + return x+y; +} + /* return the distance to a point in the area */ int16_t distance_from_robot(int16_t x, int16_t y) { @@ -267,10 +278,9 @@ uint8_t get_opponent_color(void) int8_t get_opponent_xy(int16_t *x, int16_t *y) { uint8_t flags; - return -1; // XXX IRQ_LOCK(flags); -/* *x = ballboard.opponent_x; */ -/* *y = ballboard.opponent_y; */ + *x = ballboard.opponent_x; + *y = ballboard.opponent_y; IRQ_UNLOCK(flags); if (*x == I2C_OPPONENT_NOT_THERE) return -1; @@ -282,11 +292,10 @@ int8_t get_opponent_da(int16_t *d, int16_t *a) { uint8_t flags; int16_t x_tmp; - return -1; // XXX IRQ_LOCK(flags); -/* x_tmp = ballboard.opponent_x; */ -/* *d = ballboard.opponent_d; */ -/* *a = ballboard.opponent_a; */ + x_tmp = ballboard.opponent_x; + *d = ballboard.opponent_d; + *a = ballboard.opponent_a; IRQ_UNLOCK(flags); if (x_tmp == I2C_OPPONENT_NOT_THERE) return -1; @@ -297,27 +306,16 @@ int8_t get_opponent_da(int16_t *d, int16_t *a) int8_t get_opponent_xyda(int16_t *x, int16_t *y, int16_t *d, int16_t *a) { uint8_t flags; - return -1; // XXX IRQ_LOCK(flags); -/* *x = ballboard.opponent_x; */ -/* *y = ballboard.opponent_y; */ -/* *d = ballboard.opponent_d; */ -/* *a = ballboard.opponent_a; */ + *x = ballboard.opponent_x; + *y = ballboard.opponent_y; + *d = ballboard.opponent_d; + *a = ballboard.opponent_a; IRQ_UNLOCK(flags); if (*x == I2C_OPPONENT_NOT_THERE) return -1; return 0; } -uint8_t opponent_is_behind(void) -{ -/* int8_t opp_there; */ -/* int16_t opp_d, opp_a; */ - -/* opp_there = get_opponent_da(&opp_d, &opp_a); */ -/* if (opp_there && (opp_a < 215 && opp_a > 145) && opp_d < 600) */ -/* return 1; */ - return 0; -} int16_t distance_from_opponent(int16_t x, int16_t y) {