坐标轴的旋转公式相关C#代码
时间: 2024-11-05 20:26:19 浏览: 35
在C#中,坐标轴的旋转通常涉及到矩阵变换,特别是二维空间中的旋转。我们可以使用二维向量和旋转变换矩阵来表示。假设我们有一个点P(x, y),旋转角度为θ,我们可以使用以下公式:
首先,将旋转转换成旋转矩阵(绕原点逆时针旋转):
```csharp
Matrix4x4 rotationMatrix = Matrix4x4.CreateRotationZ(θ * Math.PI / 180); // θ是以度数为单位
```
然后,我们将点P乘以这个旋转矩阵来得到旋转后的坐标:
```csharp
Vector2 rotatedPoint = Vector2.Transform(new Vector2(x, y), rotationMatrix);
float newX = rotatedPoint.X;
float newY = rotatedPoint.Y;
```
完整的代码示例如下:
```csharp
using System.Numerics;
// ...
public static void RotateAroundOrigin(float x, float y, double angleDegrees)
{
double angleRadians = angleDegrees * Math.PI / 180.0;
Matrix4x4 rotationMatrix = Matrix4x4.CreateRotationZ(angleRadians);
Vector2 point = new Vector2(x, y);
Vector2 rotatedPoint = Vector2.Transform(point, rotationMatrix);
Console.WriteLine($"Original point: ({x}, {y})");
Console.WriteLine($"Rotated point: ({rotatedPoint.X}, {rotatedPoint.Y})");
}
```
你可以通过调用`RotateAroundOrigin()`函数并传入需要旋转的坐标和角度来应用此操作。
阅读全文