| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1280 人关注过本帖
标题:求指点!坐标的变化是如何得来的?
只看楼主 加入收藏
fxjorry
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-4-6
结帖率:0
收藏
 问题点数:0 回复次数:1 
求指点!坐标的变化是如何得来的?
图像旋转翻转变换,给定m行、n列的图像各像素点灰度值,对其依次进行一系列操作后,求得最终图像,其中肯能操作如下四种:
A:顺时针旋转90度                                        输入 2 3                    输出  4 1
B:逆时针旋转90度                                             1 2 3                        5 2
C:左右翻转                                                   4 5 6                        6 3
D:上下翻转
求操作完成后输出图像结果:            

分析过程中:x,y为m*n矩阵中某元素的坐标,x表示行号,y表示列号,操作变化的坐标变化如下:

A:矩阵变成n*m,元素坐标(x,y)变成(y,m-x+1)           求问下,顺时针旋转坐标为什么会变成(y,m-x+1),从何而来,为什么不是x何y互换?顺时针旋转是按中心旋转还是按上下左右4个点旋转?
B:矩阵变成n*m,元素坐标(x,y)变成(n-y+1,x)      
C:矩阵还是m*n,元素坐标(x,y)变成(x,n-y+1)
D:矩阵还是m*n,元素坐标(x,y)变成(m-x+1,y)
程序如下:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=110;
int m,n,a[N][N],b[N][N];
string s;
void input()
{
    cin>>m>>n;
    for(int i=1;i<=m;i++)
    for(int j=1;j<=n;j++)
    cin>>a[i][j];
    cin>>s;
 }
 int f(char a,int x,int y,int g)
 {
     if(a=='A') if(!g) return y; else return m-x+1;
    if(a=='B') if(!g) return n-y+1; else return x;
    if(a=='C') if(!g) return x; else return n-y+1;
    if(!g) return m-x+1; else return y;
 }
 void work()
 {
     for(int k=0;k<s.length();k++)
     {
         for(int i=1;i<=m;i++)
         for(int j=1;j<=n;j++)
             b[f(s[k],i,j,0)][f(s[k],i,j,1)]=a[i][j];
             if(s[k]=='A'||s[k]=='B') swap(m,n);
             for (int i=1;i<=m;i++) for(int j=1;j<=n;j++)
                 a[i][j]=b[i][j];
                  }
 }
 void output()
 {
     for(int i=1;i<=m;i++)
     {
         for(int j=1;j<=n;j++) cout<<a[i][j]<<' ';
         cout<<endl;
     }
 }
 int main()
 {
     input();
     work();
     output();
     return 0;
 }
搜索更多相关主题的帖子: 坐标 旋转 int for return 
2018-05-03 23:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
顺时针旋转是按中心旋转还是按上下左右4个点旋转?
有什么区别?

顺时针旋转坐标为什么会变成(y,m-x+1),从何而来,为什么不是x何y互换?
画个图
图片附件: 游客没有浏览图片的权限,请 登录注册



2018-05-04 09:14
快速回复:求指点!坐标的变化是如何得来的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017965 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved