矩阵旋转c语言
时间: 2023-07-09 12:10:24 浏览: 119
在 C 语言中,同样可以通过矩阵乘法来实现矩阵旋转。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h>
void rotate_matrix(double A[], int n, double theta, double A_rotated[]) {
double R[4] = {cos(theta), -sin(theta), sin(theta), cos(theta)};
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
double v[2] = {i, j};
double i_rotated = R[0] * v[0] + R[1] * v[1];
double j_rotated = R[2] * v[0] + R[3] * v[1];
if (i_rotated >= 0 && i_rotated < n && j_rotated >= 0 && j_rotated < n) {
A_rotated[(int)i_rotated * n + (int)j_rotated] = A[i * n + j];
}
}
}
}
int main() {
double A[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
double A_rotated[9] = {0};
rotate_matrix(A, 3, M_PI / 4, A_rotated);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%.2f ", A_rotated[i * 3 + j]);
}
printf("\n");
}
return 0;
}
```
其中,`A` 是原始矩阵,`n` 是矩阵的维数,`theta` 是旋转角度。函数输出旋转后的矩阵 `A_rotated`。注意,这里使用了 `M_PI` 常量来表示圆周率。
阅读全文