cSharp已知旋转中心、当前点坐标、旋转角度,求旋转后的坐标,编写函数
时间: 2024-02-12 14:04:53 浏览: 203
可以使用C#的数学库来实现这个功能。具体的实现步骤如下:
1. 定义一个函数,接收旋转中心点、当前点坐标、旋转角度作为输入参数,并返回旋转后的坐标。
2. 首先,我们需要将旋转中心点和当前点坐标转换为Vector2类型,这可以通过Vector2的构造函数来实现。
3. 然后,我们需要计算出旋转矩阵,可以使用C#的数学库来实现。具体的计算公式如下所示:
```csharp
float cosA = (float)Math.Cos(angle);
float sinA = (float)Math.Sin(angle);
float x = point.X - center.X;
float y = point.Y - center.Y;
float newX = x * cosA - y * sinA;
float newY = x * sinA + y * cosA;
```
其中,cosA和sinA分别表示旋转角度的余弦值和正弦值,x和y分别表示当前点坐标相对于旋转中心点的偏移量,newX和newY分别表示旋转后的坐标相对于旋转中心点的偏移量。
4. 最后,我们可以使用Vector2的加法运算来计算旋转后的坐标。具体的代码实现如下:
```csharp
using System.Numerics;
public static Vector2 RotatePoint(Vector2 center, Vector2 point, float angle)
{
// 计算旋转矩阵
float cosA = (float)Math.Cos(angle);
float sinA = (float)Math.Sin(angle);
float x = point.X - center.X;
float y = point.Y - center.Y;
float newX = x * cosA - y * sinA;
float newY = x * sinA + y * cosA;
// 计算旋转后的坐标
Vector2 result = new Vector2(newX, newY) + center;
return result;
}
```
以上代码可以通过调用RotatePoint函数来实现旋转变换,并返回旋转后的坐标。
阅读全文
相关推荐


















