static int32_t ball_traj(Ball *ball) { int32_t theta; theta = atan2_lookup((int16_t)(ball->center.y - sg_center.y), (int16_t)(ball->center.x - sg_center.x)); theta += TRIG_MAX_ANGLE / 4; // idk why... return theta; }
void prv_draw_pupil(GContext *ctx, const GRect *eye_rect, const GPoint *perimeter_point) { const int16_t pupil_radius = 3; const GSize pupil_size = GSize(pupil_radius * 2, pupil_radius * 2); const GRect pupil_container_rect = grect_inset((*eye_rect), GEdgeInsets(2 * pupil_radius)); const GPoint pupil_center = grect_center_point(&pupil_container_rect); const int32_t pupil_angle = atan2_lookup(perimeter_point->y - pupil_center.y, perimeter_point->x - pupil_center.x) + DEG_TO_TRIGANGLE(90); const GRect pupil_rect = grect_centered_from_polar(pupil_container_rect, GOvalScaleModeFitCircle, pupil_angle, pupil_size); graphics_fill_radial(ctx, pupil_rect, GOvalScaleModeFitCircle, pupil_radius, 0, TRIG_MAX_ANGLE); }
static void handle_accel(AccelData *accel_data, uint32_t num_samples) { angle = atan2_lookup(accel_data->z, accel_data->x) * 360 / TRIG_MAX_ANGLE - 270; //APP_LOG(APP_LOG_LEVEL_DEBUG, "Angle %ld", angle); snprintf(text_buffer, sizeof(text_buffer), "%ld", angle); text_layer_set_text(text_angle, text_buffer); }
static bool point_in_arc(int32_t aPercent, int32_t x, int32_t y, int32_t radius) { int32_t a = atan2_lookup(x, -y); int32_t degree = TRIG_MAX_ANGLE * aPercent / 100; return (0 <= a && a < degree); }