算法旋转矩阵
1. 旋转矩阵的发明者是谁
旋转矩阵(Rotation matrix)是在乘以一个向量的时候改变向量的方向但不改变大小的效果的矩阵。旋转矩阵不包括反演,它不可以把右手坐标系改变成左手坐标系或反之。所有旋转加上反演形成了正交矩阵的集合。对于3D坐标系,任意两个坐标系却不能等价。实际上,存在两种完全不同的3D坐标系:左手坐标系和右手坐标系。如果同属于左手坐标系或者右手坐标系,则可以通过旋转来重合,否则不可以
1,Patric Ostergard
他的主要贡献是用了全新的模拟退火算法解决了旋转矩阵的构造问题,运用他的模拟退火程序,可以很迅速的产生许许多多的旋转矩阵。
2,Alex Sidorenko
他研究出了许多旋转矩阵和几种产生旋转矩阵的基于秃岭浏览的一般方法。
3,Greg Kuperberg
他注意到线性的[v,t]编码的补集可以给出区组长度不定的覆盖设计,而这可以产生对现有的旋转矩阵的一系列改进。
4,Dan Gordon
他收集的旋转矩阵是迄今为止最全面,最权威的
2. c语言 旋转矩阵算法
#include <stdlib.h>
#include <stdio.h>
#define N 5
int min(int a,int b,int c,int d)
{
a=a<b?a:b;
a=a<c?a:c;
a=a<d?a:d;
return a;
}
int main()
{
int arr[N][N],i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
arr[i][j]=min(i,j,N-1-i,N-1-j);
printf("%d ",arr[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
3. 计算机图形学旋转算法
绕任意点旋转的思路是,先将任意旋转点一起平移到原点,图像随旋转点一起平移,然后根据旋转矩阵将图像旋转,然后再将旋转点与图像一起平移回原先的位置.
旋转矩阵:将所需旋转角转换为弧度后算出COS和SIN函数结果并填入矩阵,将旋转点与组成图像的所有顶点坐标与矩阵相乘获得变换后的新坐标.
任意点旋转的复合矩阵
矩阵相乘的顺序很重要,因为矩阵相乘先后结果是不对等的,而矩阵表达上是从右到左的,比如T*R*-T,计算过程相当于T*(R*-T),另外矩阵相乘是采用交叉点乘,而M矩阵也是个3*3的矩阵
得到M复合矩阵后,再将原点与图像顶点与M相乘,即可得到变换后的新坐标.即P'=M*P
图像变换算法其实特简单,就是cos和sin,然后就是四则运算,再填入矩阵,计算复合矩阵,按现在的教学大纲小学生都会,计算机写程序一点没难度,重点其实在图像变换的理解上.