C S hap复制一个Point矩阵的所有坐标,要求新坐标改变首坐标后,其余坐标跟着比例修改
时间: 2024-04-29 13:23:48 浏览: 70
假设要复制的 Point 矩阵为 matrix,新的矩阵为 newMatrix,比例为 ratio。
首先,复制 matrix 中的所有坐标到 newMatrix 中:
```csharp
Point[,] newMatrix = new Point[matrix.GetLength(0), matrix.GetLength(1)];
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
newMatrix[i, j] = matrix[i, j];
}
}
```
接下来,改变新矩阵的首坐标:
```csharp
newMatrix[0, 0] = new Point(newMatrix[0, 0].X + deltaX, newMatrix[0, 0].Y + deltaY);
```
其中,deltaX 和 deltaY 分别为首坐标在横轴和纵轴上的偏移量。
最后,修改其余坐标的位置:
```csharp
for (int i = 1; i < newMatrix.GetLength(0); i++)
{
for (int j = 1; j < newMatrix.GetLength(1); j++)
{
int newX = newMatrix[0, 0].X + (int)((newMatrix[i, j].X - newMatrix[0, 0].X) * ratio);
int newY = newMatrix[0, 0].Y + (int)((newMatrix[i, j].Y - newMatrix[0, 0].Y) * ratio);
newMatrix[i, j] = new Point(newX, newY);
}
}
```
其中,newX 和 newY 分别为新坐标在横轴和纵轴上的位置,计算公式为首坐标的位置加上相对偏移量的比例。
阅读全文