diff --git a/src/W800_SDK_v1.00.10/app/gfx/compass_screen.c b/src/W800_SDK_v1.00.10/app/gfx/compass_screen.c index bcd1844..a07c8c1 100644 --- a/src/W800_SDK_v1.00.10/app/gfx/compass_screen.c +++ b/src/W800_SDK_v1.00.10/app/gfx/compass_screen.c @@ -72,8 +72,8 @@ static void rotate_cardinal(CompassCardinal_t *cardinal, uint16_t azimuth) lv_coord_t rotated_x, rotated_y; float azimuth_in_rads = (float)azimuth*M_PI/180.0; - rotated_x = (float)(cardinal->position.x-120+cardinal->offset.x)*cos(azimuth_in_rads) - (float)(cardinal->position.y-120+cardinal->offset.y)*sin(azimuth_in_rads) + 120-cardinal->offset.x; - rotated_y = (float)(cardinal->position.y-120+cardinal->offset.y)*cos(azimuth_in_rads) + (float)(cardinal->position.x-120+cardinal->offset.x)*sin(azimuth_in_rads) + 120-cardinal->offset.y; + rotated_x = (float)(cardinal->position.x-120+cardinal->offset.x)*cos(azimuth_in_rads) + (float)(cardinal->position.y-120+cardinal->offset.y)*sin(azimuth_in_rads) + 120-cardinal->offset.x; + rotated_y = (float)(cardinal->position.y-120+cardinal->offset.y)*cos(azimuth_in_rads) - (float)(cardinal->position.x-120+cardinal->offset.x)*sin(azimuth_in_rads) + 120-cardinal->offset.y; lv_obj_set_pos(cardinal->label, rotated_x, rotated_y); } @@ -102,7 +102,7 @@ void compass_screen_set_azimuth(CompassScreen_t * const compassScreen, uint16_t //We make sure the azimuth is in the right range ie 0 to 359 azimuth %= 360; - uint16_t azimuthAdjusted = 359 - azimuth; + uint16_t azimuthAdjusted = /*359 -*/ azimuth; uint8_t index; @@ -129,7 +129,7 @@ void compass_screen_set_azimuth(CompassScreen_t * const compassScreen, uint16_t //Rotate each cardinal with the current azimuth rotate_cardinal(&compassScreen->northCardinal, azimuth); - lv_img_set_angle(compassScreen->northMarker, azimuth*10); + lv_img_set_angle(compassScreen->northMarker, -azimuth*10); //lv_meter_set_scale_range(compassScreen->compassGraduation.meter, compassScreen->compassGraduation.scale, 0, 330, 330, azimuth-90); rotate_cardinal(&compassScreen->eastCardinal, azimuth);