旋转矩阵
第1题:
下述绕坐标原点逆时针方向旋转a 角的坐标变换矩阵中哪一项是错误的?( )
| A B | | C D |
A -cos a;
B-sin a;
Csin a;
Dcos a
第2题:
已知直线 AB 两端点的坐标为 A(2,3),B(5,6).写出使直线 AB 以坐标原点为中心顺时针旋转 90 的变换矩阵,并求出变换后直线 AB 的坐标矩阵。
参考答案:
(1)AB 的齐次坐标矩阵为:![]()
(2)绕原点顺时针旋转 90°的变换矩阵为:
(3)变换后直线 AB 的坐标矩阵为:
第3题:
如果以下3*3矩阵沿顺时针方向旋转90°后所形成的矩阵就是原来的矩阵:

其中,位于*处的元素需要考生填写
请完整地写出该矩阵。

第4题:


第5题:


第6题:
创建一个4阶魔术矩阵A与单位矩阵B,并分别计算两矩阵之和、矩阵相乘、矩阵点乘、A矩阵乘方、A矩阵装置。
第7题:
y照相机型SPECT的断层位置和层厚由()决定。
第8题:
电话呼叫人员座位的安放方式通常有以下()几种。
第9题:
下面()属于特殊矩阵。
第10题:
第11题:
正交旋转
斜交旋转
逆交旋转
完全旋转
第12题:
平移
旋转
错切
以上说法都不对
第13题:
证明二维旋转和比例变换的组合变换时,变换矩阵可交换相乘
参考答案:

第14题:
阅读以下说明和流程图,回答问题1至问题3。
[说明]
信息处理过程中经常需要将图片或汉字点阵做旋转处理。一个矩阵以顺时针方向旋转90°后可以形成另一个矩阵,如下图所示:

流程图2-1描述了对n*n矩阵的某种处理。流程图2-2是将矩阵A顺时针旋转90°形成矩阵B的具体算法。

请写出以下3*3单位矩阵沿顺时针方向旋转90°后所形成的矩阵。


解析:信息处理过程中经常需要将图片点阵或汉字点阵做旋转处理。这种方法可以简化为对n*n矩阵的旋转处理。其中,n应该是一个变量,运行时由该程序模块外部导入具体的值。编程技术的一个基本要点就是对通用的情况找出规律,再按规律进行处理。


第15题:
用用最小空间度将一个M*N的矩阵旋转90度(顺逆时针均可)
算法说明:
设有一个(M×N)3*4维矩阵A,旋转后成4*3
1 2 3 4 9 5 1
5 6 7 8 => 10 6 2
9 10 11 12 11 7 3
12 8 4
可以发现旋转后矩阵与原矩阵的关系:
旋转后 原矩阵
A[0,0] = A[2,0] = 9
A[0,1] = A[1,0] = 5
A[0,2] = A[0,0] = 1
A[1,0] = A[2,1] = 10
A[1,1] = A[1,1] = 6
A[1,2] = A[0,1] = 2
A[2,0] = A[2,2] = 11
A[2,1] = A[1,2] = 7
A[2,2] = A[0,2] = 3
A[3,0] = A[2,3] = 12
A[3,1] = A[1,3] = 8
A[3,2] = A[0,3] = 4
可以得出对应关系为:旋转后矩阵A[i,j] = 原矩阵A[ M- j -1, i ]
所以我们可以用同一个矩阵来保存转换前后的值
用两层循环(注意外层为N,内层为M),
依次交换A[i,j] 与 A[ M- j -1, i ],
(交换不用额外存储空间,直接相加交换,如交换a和b的值:a= a+ b; b= a- b; a = a - b)
这样可以求出A[i,j]的值,原来A[i,j]的值则保存在A[ M- j -1, i ]中
每一个A[i,j]都唯一对应一个A[ M- j -1, i ],所以我们从0开始依次求A[i,j]的值
要注意的是如果A[ M- j- 1 ,i]在数组中存放的位置在A[i,j]之后,我们才做交换
如果A[ M- j- 1 ,i]在A[i,j]之前,则说明A[ M- j- 1 ,i]已经交换过,其值存在对应的
次A中,依次查找,直到找到位于A这后的对应元素即为该交换的值,下面用流程说明
~A[x,y]表示A[i,j]对应在原矩阵中的元素.
处理元素A[0,0](在数组中的位置为0), 其对应原矩阵的~A[2,0](对应位置为8),交换
处理元素A[0,1](位置为1),~A[1,0](位置为4),交换
处理元素A[0,2](位置为2),~A[0,0](位置为0),不交换,
查找到位置为0的元素对应的~~A[2,0](位置为8),在其之后,即A[2,0]与A[0,0]交换过
直接交换A[0,2]和A[2,0] 转摘请注明:http://www.pghome.net/
依此类推。
A[1,0](位置3) -> ~A[2,1](位置9)
A[1,1](位置4) -> ~A[1,1](位置6)
A[1,2](位置5) -> ~A[0,1](位置1)(交换过) -> ~~A[2,1] = A[1,0]
...
A[3,2](位置11) -> ~A[0,3](位置2,对应新矩阵下标[1,0])(交换过)
-> ~~A[2,1](位置9) ...... ~~~~A[2,3] = 4
为便于理解,可画出下面三个矩阵。
原矩阵 (存储方式相同的矩阵) 旋转后
1 2 3 4 1 2 3 9 5 1
5 6 7 8 => 4 5 6 => 10 6 2
9 10 11 12 7 8 9 11 7 3
10 11 12 12 8 4
#include <stdio.h>
#include<conio.h>
const int M=3;
const int N=4;
main()
{
int Matrix[M][N]={1,2,3,4,5,6,7,8,9,10,11,12};
int i=0 ;
int j=0 ;
int tmpi = 0;
int tmpj = 0;
int u = 0;
printf("原矩阵为:\n");
for (i= 0 ;i< M ;i++)
{
for(j=0 ; j< N; j++)
printf(" %d ",Matrix[i][j]);
printf("\n");
}
printf("顺时针转90度后:\n");
for (i= 0 ;i< N ; i++)
{
for(j= 0 ; j< M; j++)
{
求该交换元素在原矩阵对应的位置
tmpi = M- j -1;
tmpj = i ;
循环查找最后交换的位置
while((tmpi * N + tmpj) < i * M + j )
{
u= (tmpi * N + tmpj );
tmpi = u / M ;
tmpj = u % M ;
tmpi = tmpi + tmpj;
tmpj = tmpi - tmpj;
tmpi = tmpi - tmpj;
tmpi = (M-tmpi -1);
}
交换矩元素,后一个作暂存用
if (*(&Matrix[0][0] + i * M + j) != Matrix[tmpi][tmpj])
{
*(&Matrix[0][0] + i * M + j) = *(&Matrix[0][0] + i * M + j)
+ Matrix[tmpi][tmpj];
Matrix[tmpi][tmpj] = *(&Matrix[0][0] + i * M + j)
- Matrix[tmpi][tmpj];
*(&Matrix[0][0] + i * M + j) = *(&Matrix[0][0] + i * M + j)
- Matrix[tmpi][tmpj];
}
printf(" %d ",*(&Matrix[0][0] + i * M + j));
}
printf("\n");
}
getch();
return 0;
}
第16题:

第17题:
在齐次坐标系中,若用矩阵来表示各种运算,则比例和旋转变换是矩阵乘法运算,而平移变换是矩阵加法运算。
第18题:
在利用矩阵进行图形三维变换时,我们只用3×3矩阵无法完成的变换操作是()
第19题:
在因子分析中,可以进行因子旋转的原因是()。
第20题:
()属于特殊矩阵。
第21题:
视频矩阵分为()。
第22题:
D3DXMatrix RotarionX
D3DXMatrix RotarionY
D3DXMatrix RotarionZ
D3DXMatrix RotX
D3DXMatrix RotY
第23题:
对
错