C#建立类文件,实现直角坐标与极坐标之间的转换,源代码
时间: 2024-10-11 15:07:32 浏览: 14
在C#中,你可以创建一个名为`CartesianToPolarConverter`或类似名称的类,用于实现直角坐标到极坐标的转换。以下是一个简单的示例,这个类包含两个静态方法:`CartesianToPolar`和`PolarToCartesian`:
```csharp
using System;
public class CartesianToPolarConverter
{
// 直角坐标到极坐标转换
public static (double Radius, double AngleInDegrees) CartesianToPolar(double x, double y)
{
if (x == 0 && y == 0)
throw new ArgumentException("Invalid coordinates (0, 0) represent an infinite angle.");
double radius = Math.Sqrt(x * x + y * y);
double angleInRadians = Math.Atan2(y, x);
double angleInDegrees = angleInRadians * (180 / Math.PI);
return (radius, angleInDegrees);
}
// 极坐标到直角坐标转换
public static (double X, double Y) PolarToCartesian(double radius, double angleInDegrees)
{
double angleInRadians = angleInDegrees * (Math.PI / 180);
double x = radius * Math.Cos(angleInRadians);
double y = radius * Math.Sin(angleInRadians);
return (x, y);
}
}
// 使用示例
public static void Main()
{
try
{
var cartesianPoint = (5, 3); // 直角坐标
var polarResult = CartesianToPolar(cartesianPoint.X, cartesianPoint.Y);
Console.WriteLine($"Cartesian ({cartesianPoint}) to Polar: R={polarResult.Radius}, A={polarResult.AngleInDegrees}°");
var polarPoint = (7, 45); // 极坐标
var cartesianResult = PolarToCartesian(polarPoint.Radius, polarPoint.AngleInDegrees);
Console.WriteLine($"Polar ({polarPoint.Radius}, {polarPoint.AngleInDegrees}°) to Cartesian: ({cartesianResult.X}, {cartesianResult.Y})");
}
catch (ArgumentException ex)
{
Console.WriteLine(ex.Message);
}
}
```
阅读全文