第一次编程作业

 1 #include<iostream>
 2 #include<Eigen/Dense>
 3 #include<math.h>
 4 using Eigen::MatrixXd;
 5 using namespace std;
 6 
 7 int main() 
 8 {
 9     string Name,Action;
10     int PointNumber,ActionNumber;
11     double PointOneX,PointOneY,PointTwoX,PointTwoY,PointThreeX,PointThreeY,MoveX=0,MoveY=0,RotateAngle=0;
12     MatrixXd TotateMatrix(2,2),FinalMatrix;
13     MatrixXd InputMatrix1(1,2),InputMatrix2(2,2),InputMatrix3(3,2),MoveMatrix1(1,2),MoveMatrix2(2,2),MoveMatrix3(3,2);
14     
15     cout<<"please input the information:";
16     cin>>Name;
17     cin>>PointNumber;
18     switch(PointNumber)      //确定输入点构成的矩阵; 
19         {
20             case 1: cin>>PointOneX;cin>>PointOneY;
21                     InputMatrix1<<PointOneX,PointOneY;break;
22                     
23             case 2:    cin>>PointOneX;cin>>PointOneY;cin>>PointTwoX;cin>>PointTwoY;
24                     InputMatrix2<<PointOneX,PointOneY,
25                                  PointTwoX,PointTwoY;break;
26                     
27             case 3: cin>>PointOneX;cin>>PointOneY;cin>>PointTwoX;cin>>PointTwoY;cin>>PointThreeX;cin>>PointThreeY;
28                     InputMatrix3<<PointOneX,PointOneY,
29                                   PointTwoX,PointTwoY,
30                                   PointThreeX,PointThreeY;break;
31                    
32             default: cout<<"error";return 0;
33         }
34     
35     cin>>Action;
36     if(Action=="move") {ActionNumber=7;cin>>MoveX;cin>>MoveY;}
37        else {ActionNumber=11;cin>>RotateAngle;}
38     RotateAngle=RotateAngle*M_PI/180;
39     
40     switch(ActionNumber*PointNumber)     //实现平移或旋转运动; 
41         {
42             case 11:TotateMatrix<<cos(RotateAngle),sin(RotateAngle),
43                     -sin(RotateAngle),cos(RotateAngle);
44                     cout<<InputMatrix1*TotateMatrix;break;
45                     
46             case 22:TotateMatrix<<cos(RotateAngle),sin(RotateAngle),
47                     -sin(RotateAngle),cos(RotateAngle);
48                     cout<<InputMatrix2*TotateMatrix;break;
49                     
50             case 33:TotateMatrix<<cos(RotateAngle),sin(RotateAngle),
51                     -sin(RotateAngle),cos(RotateAngle);
52                     cout<<InputMatrix3*TotateMatrix;break;
53                     
54             case 7:MoveMatrix1<<MoveX,MoveY;
55                   cout<<InputMatrix1+MoveMatrix1;break;
56                   
57             case 14:MoveMatrix2<<MoveX,MoveY,
58                                   MoveX,MoveY;
59                     cout<<InputMatrix2+MoveMatrix2;break;
60                     
61             case 21:MoveMatrix3<<MoveX,MoveY,
62                                   MoveX,MoveY,
63                                   MoveX,MoveY;
64                     cout<<InputMatrix3+MoveMatrix3;break;
65         }
66     
67     return 0;
68 }

说明:1.本次作业输入的时候忽略括号逗号换行提示等辅助信息,导致输入可读性不高;

        2.输出的结果是以矩阵的形式显示,每一行代表一个点的坐标;

        3.一次只能进行一次变换,不能进行平移旋转多次变换;

转载于:https://www.cnblogs.com/wang-kai/p/5007637.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值