Files
lucky-cat/components/domain/src/direction/domain_angle_math.c
T

35 lines
776 B
C

/*
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "domain_internal.h"
/* 角度统一归一化到 (-180, 180],为目录匹配和最短旋转提供唯一表示。 */
float domain_angle_normalize(float angle)
{
while (angle > 180.0f) {
angle -= 360.0f;
}
while (angle <= -180.0f) {
angle += 360.0f;
}
return angle;
}
float domain_angle_shortest_rotation(float current, float target)
{
/* 结果限制到 [-180, 180],正负号决定方向,避免不必要的整圈运动。 */
float diff = target - current;
while (diff > 180.0f) {
diff -= 360.0f;
}
while (diff < -180.0f) {
diff += 360.0f;
}
return diff;
}