坐标系的转换- -!
顺时针(x,y)-->(y,n+1-x)-->(n+1-x,m+1-y)-->(m+1-y,x)
有很多细节:
1.xk=yk,yk=n+1-xk这样是错的,xk已经变换了
2.如果又有正旋又有逆旋,要考虑n,m的旋转
3.不能直接选择n,m,不然下个坐标的n,m是错乱的
#include<iostream>
#include<stdio.h>
using namespace std;
int n,m,x,y,z,p,xk,yk;
void trans(int xk,int yk){
int tx,ty,tn=n,tm=m;
if(x){
if(x==1)
tx=yk,ty=n+1-xk;
else if(x==2)
tx=n+1-xk,ty=m+1-yk;
else if(x==3)
tx=m+1-yk,ty=xk;
xk=tx,yk=ty;
if(x%2)//--转了以后行列变化
swap(tn,tm);
}
//printf("%d %d\n",xk,yk);
if(y==1)
yk=tm+1-yk;
//printf("%d %d\n",xk,yk);
if(z){
if(z==1)
tx=tm+1-yk,ty=xk;
else if(z==2)
tx=tn+1-xk,ty=tm+1-yk;
else if(z==3)
tx=yk,ty=tn+1-xk;
xk=tx,yk=ty;
}
printf("%d %d\n",xk,yk);
}
int main(){
cin>>n>>m>>x>>y>>z>>p;
x%=4;y%=2;z%=4;
for(int i=0;i<p;i++){
scanf("%d %d",&xk,&yk);
trans(xk,yk);
}
return 0;
}