AngleConverter.cs
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace Rcs.Shared.Utils
{
/// <summary>
/// 角度弧度转换工具类,支持多圈角度处理
/// @author zzy
/// </summary>
public static class AngleConverter
{
/// <summary>
/// 弧度转角度(支持多圈,保留完整圈数信息)
/// </summary>
/// <param name="radians">弧度值</param>
/// <returns>角度值</returns>
public static double ToDegrees(double radians) => radians * (180.0 / Math.PI);
/// <summary>
/// 角度转弧度(支持多圈,保留完整圈数信息)
/// </summary>
/// <param name="degrees">角度值</param>
/// <returns>弧度值</returns>
public static double ToRadians(double degrees) => degrees * (Math.PI / 180.0);
/// <summary>
/// 弧度转角度(可空类型)
/// </summary>
public static double? ToDegrees(double? radians) => radians.HasValue ? ToDegrees(radians.Value) : null;
/// <summary>
/// 角度转弧度(可空类型)
/// </summary>
public static double? ToRadians(double? degrees) => degrees.HasValue ? ToRadians(degrees.Value) : null;
/// <summary>
/// 将弧度标准化到 [-π, π] 范围
/// </summary>
public static double NormalizeRadians(double radians)
{
var result = radians % (2 * Math.PI);
if (result > Math.PI) result -= 2 * Math.PI;
else if (result < -Math.PI) result += 2 * Math.PI;
return result;
}
/// <summary>
/// 将角度标准化到 [-180, 180] 范围
/// </summary>
public static double NormalizeDegrees(double degrees)
{
var result = degrees % 360.0;
if (result > 180.0) result -= 360.0;
else if (result < -180.0) result += 360.0;
return result;
}
}
}