将一个正三角形绕它的一个顶点按逆时针方向旋转,分别作出旋转下列角度后的图形:
(1)30°; (2)60°; (3)90°; (4)120°。
第1题:
(1)如果一个菱形绕对角线的交点旋转90°后,所得图形与原来的图形重合,那么这个菱形 是正方形吗?为什么?
(2)如果一个四边形绕对角线的交点旋转90°后,所得图形与原来的图形重合,那么这个四边形是正方形吗?为什么?
(1)是正方形。因为对角线相等的菱形是正方形
(2)是正方形。不难证明对角线相等,四条边相等。
第2题:
用用最小空间度将一个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;
}
第3题:

第4题:

第5题:
对称分量法中,αUa表示()。
第6题:
由曲线y=x2/2和直线x=1,x=2,y=-1围成的图形,绕直线y=-1旋转所得旋转体体积为:()
第7题:
关于S捻叠盘式假捻器,下列说法正确的是()(方向以俯视角度为准)。
第8题:
使用扳手时应选相应的旋转方向,将控制杆移()到F(顺时针旋转)或R(逆时针旋转)位置上去,将力矩设到低或高的位置。
第9题:
中肠袢突入脐腔及退回腹腔的旋转方向与角度是()。
第10题:
绕X轴顺时针旋转180º,再绕Z轴逆时针旋转90º
绕Z轴逆时针旋转90º,再绕Y轴顺时针旋转180º
绕Y轴顺时针旋转180º,再绕Z轴顺时针旋转90º
绕Z轴逆时针旋转90º,再绕X轴顺时针旋转180º
第11题:
逆时针旋转270
逆时针旋转180
逆时针旋转90
顺时针旋转270
第12题:
π2/4
π/2
π2/4+1
π/2+1
第13题:
将直角边长为50px,100px的一个直角三角形,绕直角顶点按逆时针方向连续旋转三次,每次都旋转90°。
(1)试作出每次旋转前后的三角形;
(2)将所得的所有三角形看成一个图形,你将得到怎样的图形?
第14题:

第15题:
绕原点按逆时针方向旋转30°后所得直线与圆(x-2)2+y2=3的位置关系是( )。第16题:

第17题:
曲线y=sinx(0≤x≤π/2)与直线x=π/2,y=0围成一个平面图形。此平面图形绕x轴旋转产生的旋转体的体积是:()
第18题:
有一组正序对称向量,彼此间相位角是120°,它按()方向旋转。
第19题:
在对图形进行旋转时,正确的说法是()。
第20题:
任意一个相量乘以j相当于该相量()
第21题:
角度为正时,将逆时针旋转
角度为负时,将逆时针旋转
角度为正时,将顺时针旋转
旋转方向不受角度正负值影响
第22题:
90度
60度
45度
30度
第23题:
(293/60)π
π/60
4π2
5π