已知坐标(x,y),怎么旋转phi个角度?用C#实现
时间: 2024-10-09 19:01:37 浏览: 30
要将二维坐标 (x, y) 旋转某个角度 phi(通常以弧度表示)在 C# 中,可以使用向量旋转公式,它基于矩阵运算。首先,我们需要将旋转转换成旋转矩阵:
\[ R(\theta) = \begin{bmatrix}
\cos(\theta) & -\sin(\theta) \\
\sin(\theta) & \cos(\theta)
\end{bmatrix} \]
然后,对于给定的点 (x, y),我们将它看作是一个二维向量 [x, y],将其乘以旋转矩阵:
\[ \begin{bmatrix}
x' \\
y'
\end{bmatrix}
= R(\phi)
\begin{bmatrix}
x \\
y
\end{bmatrix} \]
以下是一个简单的 C# 函数实现:
```csharp
using System;
public class VectorRotation
{
public static (double x, double y) Rotate(double x, double y, double phiInDegrees)
{
phiInDegrees /= 180.0; // 将角度转换为弧度
double cosTheta = Math.Cos(phiInRadians);
double sinTheta = Math.Sin(phiInRadians);
double newX = x * cosTheta - y * sinTheta;
double newY = x * sinTheta + y * cosTheta;
return (newX, newY);
}
}
// 使用示例
public void Main()
{
double x = 1.0;
double y = 2.0;
double phi = 45.0; // 要旋转的角度,单位是度
var result = VectorRotation.Rotate(x, y, phi);
Console.WriteLine($"旋转后的坐标: ({result.x}, {result.y})");
}
```
这个函数会返回旋转后的 (x', y') 坐标。请注意,输入的 `phi` 参数是以度为单位,需要先转换为弧度。
阅读全文