.利用C#编程语言封装一个类,实现两点间距离计算、方位角计算、度分秒转弧度、弧度转度分秒、度分秒转度、度转度分秒、度转弧度、弧度转度及其调用的完整代码
时间: 2024-10-23 10:16:05 浏览: 31
C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法
在C#中,我们可以创建一个名为`GeometricUtils`的类,包含上述各种数学计算功能。首先,我们需要定义一些辅助函数来处理角度转换。然后,我们将创建一个名为`Point`的结构体来表示二维坐标。以下是完整的代码:
```csharp
using System;
// 定义点的结构体
public struct Point
{
public double X;
public double Y;
}
// GeometricUtils 类
public static class GeometricUtils
{
// 计算两点之间的欧氏距离
public static double Distance(Point p1, Point p2)
{
return Math.Sqrt(Math.Pow(p1.X - p2.X, 2) + Math.Pow(p1.Y - p2.Y, 2));
}
// 计算方位角(从x轴正方向开始逆时针计算)
public static double Bearing(Point from, Point to)
{
var angleInRadians = Math.Atan2(to.Y - from.Y, to.X - from.X);
if (angleInRadians < 0) angleInRadians += 2 * Math.PI;
return angleInDegrees(angleInRadians);
}
// 度数转弧度
private static double AngleToRadians(double degrees)
{
return degrees * Math.PI / 180.0;
}
// 弧度转度数
private static double RadiansToDegrees(double radians)
{
return radians * 180.0 / Math.PI;
}
// 其他角度转换方法
public static string DegreeMinuteSecondToDegree(double degree, double minute, double second)
{
return $"{degree:D2}.{minute:D2}.{second:F4}";
}
public static double DegreeToDegreeMinuteSecond(double degree)
{
double minutes = degree * 60 % 60;
double seconds = (degree * 3600 - minutes * 60) % 60;
return degree + minutes / 60.0 + seconds / 3600.0;
}
public static string RadianToDegreeMinuteSecond(double radian)
{
var degree = RadiansToDegrees(radian);
return DegreeMinuteSecondToDegree(degree, 0, 0); // 简化输出,假设没有分钟和秒
}
// 主函数示例
public static void Main()
{
// 创建点实例并计算
Point a = new Point(0, 0);
Point b = new Point(3, 4);
double distance = Distance(a, b);
double bearing = Bearing(a, b);
Console.WriteLine($"Distance between A({a.X}, {a.Y}) and B({b.X}, {b.Y}): {distance}");
Console.WriteLine($"Bearing from A to B: {bearing}°");
// 转换示例
double angleRad = AngleToRadians(90);
double angleDeg = RadiansToDegrees(angleRad);
Console.WriteLine($"90° in radians is: {angleRad:F4}");
Console.WriteLine($"90° in degrees is: {angleDeg:F4}");
double dms = DegreeMinuteSecondToDegree(15, 30, 45);
Console.WriteLine($"15° 30' 45'' as a single degree value: {dms}");
}
}
```
在这个代码中,我们定义了一个`GeometricUtils`类,其中包含了计算两点间距离、方位角以及各种角度转换的方法。在主函数`Main`中,我们展示了如何使用这些方法,并进行了简单的角度转换演示。
阅读全文