第一次编程作业

#include <iostream>
#include <Eigen/Dense>
#include<math.h>
using Eigen::MatrixXd;
using namespace std;
int main()
{
    string Name,Action;
    int i,PointNumber;
    double MoveX,MoveY,RotateAngle;
    MatrixXd InputMatrix,OutputMatrix;
     
    cout<<"please input the information:";
    cin>>Name;
    cin>>PointNumber;
    InputMatrix.resize(PointNumber,2);
    OutputMatrix.resize(PointNumber,2);
	for (i=0;i<PointNumber;i++) //输入坐标 
	{ cin>>InputMatrix(i,0);
	  cin>>InputMatrix(i,1);
	}
	cin>>Action;
    if (Action=="move")   //   平移 
       { cin>>MoveX;
         cin>>MoveY;
         for (i=0;i<PointNumber;i++) 
		    { OutputMatrix(i,0)=InputMatrix(i,0)+MoveX;
	                         OutputMatrix(i,1)=InputMatrix(i,1)+MoveY;
		    }
	   }
	else
		{ cin>>RotateAngle; //  旋转 
		  RotateAngle=RotateAngle*M_PI/180;
		  for (i=0;i<PointNumber;i++) 
		    { OutputMatrix(i,0)=InputMatrix(i,0)*cos(RotateAngle)-InputMatrix(i,1)*sin(RotateAngle);
	                         OutputMatrix(i,1)=InputMatrix(i,1)*cos(RotateAngle)+InputMatrix(i,0)*sin(RotateAngle);
		    }
		}
	cout<<OutputMatrix;
}

 

 平移的截图:

 第一次编程作业_第1张图片

 

旋转的截图:

第一次编程作业_第2张图片

 

说明:1.一次只能进行一次变换,不能进行平移旋转多次变换;

         2.必需按照一定的输入次序且符合要求才能得出正确的结果,没有考虑到如果输入不符合要求需要报错的情况。

你可能感兴趣的:(第一次编程作业)