博记:通过输入旋转角度得到。
已知向量vector1[][]={{1},{1},{1}};,经过旋转之后得到的向量matrix_result[][]表示;
程序实现如下:
#include "iostream"
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<stack>
#include<vector>
#include<iomanip>
using namespace std;
const double pi=acos(-1.0);
#define SIZE_M 3
#define SIZE_N 3
#define SIZE_S 3
#define SIZE_T 3
#define J 1
int main()
{
double a;
cout<<"a="<<endl;
cin>>a;
double b;
cout<<"b="<<endl;
cin>>b;
double c;
cout<<"c="<<endl;
cin>>c;
double r1[SIZE_M] [SIZE_N]={{1, 0, 0},{0, cos(a*pi), sin(a*pi)},{0, -sin(a*pi), cos(a*pi)}};//a矩阵3X3
double r2[SIZE_N] [SIZE_S]={{cos(b*pi), 0, -sin(b*pi)},{0, 1, 0},{sin(b*pi), 0, cos(b*pi)}};//b矩阵3X3
double r3[SIZE_S][SIZE_T]={{cos(c*pi), sin(c*pi), 0},{-sin(c*pi), cos(c*pi), 0},{0, 0, 1}};//c矩阵3*3
double vector1[SIZE_T][J]={{1},{1},{1}};
double matrix_result[SIZE_M][SIZE_T];//旋转矩阵相乘之后的结果矩阵3*3
double matrix_result1[SIZE_M][J];//旋转之后的向量
for(int m=0;m<SIZE_M;m++)
{
for(int j=0;j<J;j++)
{
matrix_result[m][j]=0;//变量使用前记得初始化,否则结果具有不确定性
for(int n=0;n<SIZE_N;n++)
{
for(int s=0;s<SIZE_S;s++)
{
for(int t=0;t<SIZE_T;t++)
{
matrix_result[m][j]+=r1[m][n]*r2[n][s]*r3[s][t]*vector1[t][j];
}
}
}
}
}
for(int m=0;m<SIZE_M;m++)
{
cout<<endl;
for(int j=0;j<J;j++)
{
cout<<left<<setw(20)<<matrix_result[m][j]<<setw(6);
//cout<<endl;
}
}
system("pause");
return 0;
}
运行结果:
验证结果: